2013-06-18 77 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>