我有三种元素。当用户单击某个元素时,在ajax加载页面之后会出现许多新元素。我使用每个元素迭代初始元素,并向它们附加一个事件,如下所示:
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创建的元素的问题,但也引发了另一个问题。它以这样一种方式附加事件,即页面中的所有元素都一次被该特定事件触发。我的意思是,由于我有三个元素,点击其中一个就会触发所有三个alert("Alerted!Clicke!)。问题和解决办法是什么?
发布于 2014-03-28 22:10:06
使用事件委托绑定到匹配查询的所有当前和未来项:
$(document).on("click", ".some-class-here", function(){
alert("Alerted! Clicked")
});将.some-class-here替换为与tagSet元素匹配的选择器。然后删除对$.each的调用。
https://stackoverflow.com/questions/22723977
复制相似问题