自定義事件 (jQuery)


1jQuery自定義事件之trigger事件

眾所周知類似於mousedown、click、keydown等等這類型的事件都是瀏覽器提供的,通俗叫原生事件,這類型的事件是需要有交互行為才能被觸發。

在jQuery通過on方法綁定一個原生事件

$('#elem').on('click', function() {
    alert("觸發系統事件")
 });

alert需要執行的條件:必須有用戶點擊才可以。如果不同用戶交互是否能在某一時刻自動觸發該事件呢? 正常來說是不可以的,但是jQuery解決了這個問題,提供了一個trigger方法來觸發瀏覽器事件

所以我們可以這樣:

$('#elem').trigger('click');

在綁定on的事件元素上,通過trigger方法就可以調用到alert了,挺簡單!

再來看看.trigger是什么?

簡單來講就是:根據綁定到匹配元素的給定的事件類型執行所有的處理程序和行為

trigger除了能夠觸發瀏覽器事件,同時還支持自定義事件,並且自定義時間還支持傳遞參數

$('#elem').on('Aaron', function(event,arg1,arg2) {
    alert("自觸自定義時間")
 });
$('#elem').trigger('Aaron',['參數1','參數2'])

trigger觸發瀏覽器事件與自定義事件區別?

  • 自定義事件對象,是jQuery模擬原生實現的
  • 自定義事件可以傳遞參數

2jQuery自定義事件之triggerHandler事件

trigger事件還有一個特性:會在DOM樹上冒泡,所以如果要阻止冒泡就需要在事件處理程序中返回false或調用事件對象中的.stopPropagation() 方法可以使事件停止冒泡

trigger事件是具有觸發原生與自定義能力的,但是存在一個不可避免的問題: 事件對象event無法完美的實現,畢竟一個是瀏覽器給的,一個是自己模擬的。盡管 .trigger() 模擬事件對象,但是它並沒有完美的復制自然發生的事件,若要觸發通過 jQuery 綁定的事件處理函數,而不觸發原生的事件,使用.triggerHandler() 來代替

triggerHandler與trigger的用法是一樣的,重點看不同之處:

  • triggerHandler不會觸發瀏覽器的默認行為,.triggerHandler( "submit" )將不會調用表單上的.submit()
  • .trigger() 會影響所有與 jQuery 對象相匹配的元素,而 .triggerHandler() 僅影響第一個匹配到的元素
  • 使用 .triggerHandler() 觸發的事件,並不會在 DOM 樹中向上冒泡。 如果它們不是由目標元素直接觸發的,那么它就不會進行任何處理
  • 與普通的方法返回 jQuery 對象(這樣就能夠使用鏈式用法)相反,.triggerHandler() 返回最后一個處理的事件的返回值。如果沒有觸發任何事件,會返回 undefined


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM