不同于“.trigger()”,jQuery“.triggerHandler()”机制仅对第它被称为的jQuery对象。换句话说,当选择多个元素时,jQuery“.triggerHandler()”与“.trigger()”
$('.all-over-the-page').triggerHandler("readjust");
只要求带班的第一要素“全过度的页面”中的“调整”的处理程序,即使有与该类页面上的许多元素。另一方面,“.trigger()”方法会影响所有这些方法。我知道我可以使用“.each()”来解决这个问题(或者简单地写下我自己的替代品),但是为什么两者在这方面有所不同呢?它对我来说毫无意义。 (我的理解,当然,它几乎可以肯定,现在还不能改变。)
编辑澄清:
它可能更容易理解为什么我抓我的头了,如果我提供的上下文以我实际得到的代码风格。当我将各种“小部件”功能的代码放在一起时,通常会涉及事件处理程序。一个很好的例子是某种形式的表单,它有一些相关性由复选框,单选按钮或选择器控制的字段。一个常见的例子是“运送地址”复选框,它显示在数亿个电子商务网站上:如果复选框被选中,则送货地址被禁用,并使用账单地址。
现在考虑一些其他代码可为自身的原因,是完全独立的复选框控制部件的,实际上做的事情,可能包括更新复选框,设置程序的形式。在这种情况下,其他小部件代码可能希望使用“triggerHandler()”来告诉任何小部件,“嘿,我已经更新了一些东西,因此您可能需要重新检查当前状态并在必要时进行调整。”
因此,如果“.triggerHandler()”将在所有选定的元素进行操作,我可以使用:
$theForm.find('input, select, textarea').triggerHandler('change');
和所有的处理程序可以运行,做任何他们需要的。正如我所说的,它很容易写:“......是有,为什么这两个在这方面不同的一些基本原理”
$theForm.find('input, select, textarea').each(function() {
$(this).triggerHandler('change');
});
+1好问题Pointy –
我不确定你想要在这里做什么。你能给出更多关于你正试图解决的问题吗? –
更新了一些更具说明性的材料。 – Pointy