2013-06-18 75 views
0

我不能夠得到以下的triggerHandler()方法的要點:無法理解triggerHandler()方法

  • 雖然。 trigger()將對jQuery對象匹配的所有元素進行操作,.triggerHandler()隻影響第一個匹配的元素。

  • 使用.triggerHandler()創建的事件不會冒泡DOM層次結構;如果它們不是直接由目標元素處理,它們什麼也不做。

  • 而不是返回jQuery對象(以允許鏈接),.triggerHandler()返回它引起執行的最後一個處理程序返回的任何值。如果沒有處理程序被觸發,則返回undefined

欲瞭解更多詳情,請參閱http://api.jquery.com/triggerHandler/

+0

都一樣3 ........ –

+0

你想知道*爲什麼* triggerHandler的行爲如上所述?行爲似乎很清楚,但本身。如果不適合你,請在每個關於你不明白的地方添加一些解釋。 –

回答

3

的點是不通常需要事件冒泡並能夠 調用自定義事件大大提高性能任何事件名稱安全,而不會觸發本機操作,如瀏覽器鏈接,重置或提交表單。


對於$(".item").trigger("click");

.triggerHandler不同,則觸發在與.item選擇的所有元素的事件 - 選擇器。

.triggerHandler不同,該事件在.item選擇器的所有元素 的所有父母,祖父母,祖父母等中觸發。

.triggerHandler不同,您可以繼續鏈接.trigger()你可以做$(".item").trigger("click").addClass("clicked");

用下面的DOM樹,我有X標記出爲"click" - 當$(".item").trigger("click");被稱爲觸發事件:

<body X> 
    <div class="container" X> 
     <ul X> 
      <li class="item" X> 
      <li class="item" X> 
      <li class="item" X> 
      <li class="item" X> 
     </ul> 
    </div> 
</body> 

這裏與$(".item").triggerHandler("click");

<body> 
    <div class="container"> 
     <ul> 
      <li class="item" X> 
      <li class="item"> 
      <li class="item"> 
      <li class="item"> 
     </ul> 
    </div> 
</body>