Javascript jQuery事件委派和附件问题
我有一组三个元素。当用户单击某个元素时,ajax加载页面后会出现许多新的元素。我用每个元素迭代初始元素,并向它们附加一个事件,如下所示:Javascript jQuery事件委派和附件问题,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一组三个元素。当用户单击某个元素时,ajax加载页面后会出现许多新的元素。我用每个元素迭代初始元素,并向它们附加一个事件,如下所示: tagSet.each(function(index, element){ tagSet.eq(index).on("click",function(){alert("Alerted! Clicked")}); } 但是使用这种方法,ajax创建的元素将不会附加事件。因此,我必须对on()做一些更改,以适应ajax创建的元素: tagSet.each
tagSet.each(function(index, element){
tagSet.eq(index).on("click",function(){alert("Alerted! Clicked")});
}
但是使用这种方法,ajax创建的元素将不会附加事件。因此,我必须对on()做一些更改,以适应ajax创建的元素:
tagSet.each(function(index, element){
$(document).on("click",tagSet.eq(index),function(){alert("Alerted! Clicked")});
}
它解决了事件附加到那些ajax创建的元素的问题,但也引发了另一个问题。它以一种方式附加事件,即页面的所有元素都会立即被该特定事件触发。我的意思是,由于我有三个元素,单击其中一个元素会触发所有三个
警报(“警报!单击!)
。问题和解决方案是什么?使用事件委派绑定到与查询匹配的所有当前和未来项:
$(document).on("click", ".some-class-here", function(){
alert("Alerted! Clicked")
});
用与
标记集
元素匹配的选择器替换。此处的某些类
。然后删除对$的调用。每个都需要将选择器作为第二个参数传递给。
上。向我们展示什么是标记集,我们将向您展示如何避免愚蠢的looptagSet是三个
标记的匹配集这真的没什么帮助,就像说我有一桶卡住了的东西,你能把它拿出来吗?你能解释一下关于$的更多信息吗?每个使用每个都会为标记集中的每个项目将一个事件处理程序绑定到文档元素一次。这违背了使用事件委派的目的之一(单个事件的事件处理程序更少。)