[英]When does jquery.trigger fire
我已經閱讀了.trigger()文檔http://api.jquery.com/trigger/ 。 但是仍然不確定這個小提琴是如何工作的。 鏈接: https : //jsfiddle.net/LanceShi/s7pm43f3/2/
HTML:
<input id="theInput"/>
Java腳本
$(document).ready(function() {
$("#theInput").trigger("input");
});
$("#theInput").on("input", function() {
alert("Here");
});
現在,在每個鍵入/粘貼事件上都會觸發輸入事件。 但是,我在.trigger()文檔中沒有看到任何提及此內容的信息。 這是如何運作的?
它不會觸發該操作。 您的觸發器僅被觸發一次。
原因是input
事件包含許多其他事件,例如按鍵,更改,粘貼和其他一些事件。
正如其他人所指出的,您需要在添加監聽器之前更正調用觸發器的順序
您需要先register
事件,然后才能invoke
。 由於您已聲明DOM事件(未注冊為jquery事件的事件),因此需要使用函數trigger()
。 對於jquery中預定義的內容(例如click
, change
),您可以直接調用它們而無需使用trigger
。
$(document).ready(function() {
$("#theInput").on("input", function() {
alert("Here");
});
$("#theInput").trigger("input");
});
在您的代碼中, .trigger()
沒有任何作用,因為您的trigger()
將在附加input
事件之前trigger()
。
所以你的代碼應該像這樣
$(document).ready(function() {
$("#theInput").on("input", function() {
alert("Here");
}).trigger('input');
});
這里的解釋
正如您在jQuery文檔中閱讀的那樣,Trigger函數執行一個自定義事件,很好地看到這里已執行
$("#theInput").trigger("input");
在這里添加了hanlder
$("#theInput").on("input", function() {
alert("Here");
});
包括您所說的內容,當您在input元素中編寫內容時,將運行函數中的內容
function() {
alert("Here");
}
起初這令人困惑,因為乍一看不知道會發生什么。 通過將處理程序添加到#theInput,您將向事件類型“ input”添加一個偵聽器。在JavaScript中,存在一個類型為“ input”的事件,它適用於元素“ input”和“ textarea”,並且在其值更改時執行或者換句話說,當我們寫關於它們的時候。 因此,實際上這段代碼在做什么。 將事件類型為“ input”的偵聽器添加到#theInput。 如果需要更多信息,可以閱讀以下內容: https : //developer.mozilla.org/zh-CN/docs/Web/Events/input
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.