有没有什么办法可以使用jQuery来委托一个事件,它将对应于页面上与选择器匹配的所有元素,而不是从$(document)
中委托?1.7.2中的jQuery事件委托
因为这可能是措辞不当,这里的难题是:
曾经有jQuery.live
下放事件,以匹配选择的所有元素。这被替换为jQuery.delegate
,它将特定上下文选择器中的事件委托给它的子项,而后者又被jQuery.on
取代,后者实际上做了同样的事情,但在幕后有不同的位(我想象中)。
我想要做的就是安全地为我的页面上的每个div.foo
添加一个事件处理程序,而不管它可能存在的位置或存在的时间。根据文档和实证研究,以下内容仅与脚本运行时存在的.foo
元素绑定。由于有代码可能会在页面上放置一个.foo
元素,所以这不正确。
jQuery('.foo').on('click', handler);
由于live
被弃用(可能已经删除的?),我试图不使用,但唯一的解决办法,我能想出是
jQuery(document).on('click', '.foo', handler);
但是这是否有什么live
原来,在幕后?更重要的是,有没有什么重要的原因不是要做到这一点?
我们特别使用1.7.2版,但通用的jQuery答案也会有所帮助。
这是'live'最初做的,但它也正是你要找的。理想情况下,你会使用'document'以外的其他东西,但是如果你不能缩小它,那么'document'是你唯一的选择。 –
@詹姆斯蒙塔涅耶我怀疑这一点。我只是不知道是否有理由不把它委托给文档,除了可能阻止'stopPropagation'。 –
也表现。它必须一直冒泡,页面上的每次点击都会被捕获并检查,看看它是否是正确的选择器。 –