jq----dom.trigger(eventType,data)執行dom綁定事件的處理程序和行爲

trigger(type,[data])-----簡言之:觸發事件的處理函數和行爲,也就是執行定義事件的執行函數

type:一個事件對象或者要觸發的事件類型

data:傳遞給事件處理函數的附加參數

當相應的事件發生時,任何通過.on()或一個快捷方法綁定的事件處理程序將被觸發。但是,它們可以用.trigger()方法。調用 .trigger() 執行處理程序和用戶自然的觸發該事件,他們的執行順序時相同的:

$('#foo').on('click', function() {
    alert($(this).text());
});
$('#foo').trigger('click');

從jQuery 1.3開始,.trigger()事件會在DOM樹上冒泡;在事件處理程序中返回false或調用事件對象中的.stopPropagation() 方法可以使事件停止冒泡。儘管 .trigger() 模擬了事件的激活,具備合成的 event 對象,但是它並沒有完美的複製自然發生的事件(naturally-occurring event)。

若要觸發通過 jQuery 綁定的事件處理函數,而不觸發原生的事件,使用.triggerHandler() 來代替。

// 提交第一個表單,但不用submit()
$("form:first").trigger("submit");

// 控制視頻播放
$('video').trigger('play');

// 給一個事件傳遞參數
$("p").click( function (event, a, b) {
  // 一個普通的點擊事件時,a和b是undefined類型
  // 如果用下面的語句觸發,那麼a指向"foo",而b指向"bar"
} ).trigger("click", ["foo", "bar"]);

// jQuery 添加自定義事件以及觸發自定義事件
// 第一個參數是事件的名字,第二個參數是事件發生時執行的函數
$("p").bind("myEvent", function (event, message1, message2) {
  alert(message1 + ' ' + message2);   // Hello World
});
// //不一定點擊按鈕觸發,也可頁面加載時觸發,也可在滿足某種if條件時觸發
// 觸發自定義事件myEvent,並傳參
$("p").trigger("myEvent", ["Hello","World!"]);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章