0

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

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

  • 创建的事件.triggerHandler()不会冒泡 DOM 层次结构;如果它们没有被目标元素直接处理,它们什么也不做。

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

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

4

1 回答 1

3

关键是自定义事件的性能大大提高,这些事件通常不需要事件冒泡,并且能够安全地调用任何事件名称而不会触发浏览器跟踪链接、重置或提交表单等本机操作。


对于$(".item").trigger("click");

与 不同的是,该事件在使用- 选择器选择.triggerHandler的所有元素上触发。.item

与 不同.triggerHandler的是,该事件在所有带有 -selector 的元素的所有父母、祖父母、祖父母等上.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>
于 2013-06-18T07:35:50.863 回答