Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery事件委派和附件问题_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript jQuery事件委派和附件问题

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

我有一组三个元素。当用户单击某个元素时,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创建的元素的问题,但也引发了另一个问题。它以一种方式附加事件,即页面的所有元素都会立即被该特定事件触发。我的意思是,由于我有三个元素,单击其中一个元素会触发所有三个
警报(“警报!单击!)
。问题和解决方案是什么?

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

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

用与
标记集
元素匹配的选择器替换
。此处的某些类
。然后删除对
$的调用。每个

都需要将选择器作为第二个参数传递给
上。向我们展示什么是标记集,我们将向您展示如何避免愚蠢的looptagSet是三个
标记的匹配集这真的没什么帮助,就像说我有一桶卡住了的东西,你能把它拿出来吗?你能解释一下关于
$的更多信息吗?每个
使用
每个
都会为
标记集中的每个项目将一个事件处理程序绑定到
文档
元素一次。这违背了使用事件委派的目的之一(单个事件的事件处理程序更少。)