jQuery事件委托和附件问题

时间:2014-03-28 22:04:35

标签: javascript jquery ajax

我有一组三个元素。当用户点击某个元素时,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!)触发。问题和解决方案是什么?

1 个答案:

答案 0 :(得分:1)

使用事件委托绑定到与查询匹配的所有当前和未来项目:

$(document).on("click", ".some-class-here", function(){
    alert("Alerted! Clicked")
});

.some-class-here替换为与tagSet元素匹配的选择器。然后移除您对$.each的电话。