我有一组三个元素。当用户点击某个元素时,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!)
触发。问题和解决方案是什么?
答案 0 :(得分:1)
使用事件委托绑定到与查询匹配的所有当前和未来项目:
$(document).on("click", ".some-class-here", function(){
alert("Alerted! Clicked")
});
将.some-class-here
替换为与tagSet
元素匹配的选择器。然后移除您对$.each
的电话。