我无法获得triggerHandler()
方法的以下几点:
虽然。
trigger()
将对jQuery对象匹配的所有元素进行操作,但.triggerHandler()
仅影响第一个匹配的元素。使用
.triggerHandler()
创建的事件不会冒出DOM层次结构;如果它们不是直接由目标元素处理的,它们什么都不做。
.triggerHandler()
不返回jQuery对象(允许链接),而是返回它导致执行的最后一个处理程序返回的任何值。如果未触发处理程序,则返回undefined
有关详细信息,请参阅http://api.jquery.com/triggerHandler/
答案 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>