无法理解triggerHandler()方法

时间:2013-06-18 06:36:37

标签: jquery

我无法获得triggerHandler()方法的以下几点:

  
      
  • 虽然。trigger()将对jQuery对象匹配的所有元素进行操作,但.triggerHandler()仅影响第一个匹配的元素。

  •   
  • 使用.triggerHandler()创建的事件不会冒出DOM层次结构;如果它们不是直接由目标元素处理的,它们什么都不做。

  •   
  • .triggerHandler()不返回jQuery对象(允许链接),而是返回它导致执行的最后一个处理程序返回的任何值。如果未触发处理程序,则返回undefined

  •   

有关详细信息,请参阅http://api.jquery.com/triggerHandler/

1 个答案:

答案 0 :(得分: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>