Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.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 检查事件侦听器是否已在侦听对象(以避免重复操作)_Javascript_Jquery - Fatal编程技术网

Javascript 检查事件侦听器是否已在侦听对象(以避免重复操作)

Javascript 检查事件侦听器是否已在侦听对象(以避免重复操作),javascript,jquery,Javascript,Jquery,我的页面看起来像: <a class="myClass">1</a> <a class="myClass">2</a> <a class="myClass">3</a> <a class"add_anchor">Add Anchor</a> function listenToMyClassClick{ $('.myClass').click(function(e){ e.preve

我的页面看起来像:

<a class="myClass">1</a>
<a class="myClass">2</a>
<a class="myClass">3</a>

<a class"add_anchor">Add Anchor</a>
function listenToMyClassClick{
$('.myClass').click(function(e){
        e.preventDefault();  
        f();
});
}

listenToMyClassClick();

$('.addAnchor').click(function(e){
        $.ajax({
                    type: "POST",
                    url: url,
                    cache: false,
                    success: function(data){
                         listenToMyClassClick();                               
                    }
                    });  
});
结果,f被执行两次。如何使用jQuery检查侦听器是否已经在执行,以便下次不再执行它


感谢您的帮助。

按照Sergiu的建议创建一个委托活动。与其将单击事件绑定到元素动态列表中存在的元素,不如将单击事件绑定到元素的父元素,这样即使单击其子元素,也会引发单击事件。这称为事件冒泡。下面是一段代码,展示了如何使用jQuery执行此操作:

// Attach a delegated event handler
$( "#list" ).on( "click", "a", function( event ) {
    f();
});

您可以将click事件直接绑定到列表,作为其父级,并告诉它专门侦听第二个参数中定义的元素中的事件。

使用事件委派:而不是每次添加链接时都添加侦听器DOM@SergiuParaschiv,谢谢您的快速指导。我正在读你的链接。@SergiuParaschiv,你的页面直接解决了我的问题。关键词委派很神奇。再次感谢。我想我会重写我在需要时添加侦听器的整个项目:-DDoS事件传播要求我的锚列在无序列表中??我在div里面有锚,它不工作。我看不出文档中给出的结构是否是必需的oneNo…你在做什么,出了什么问题。确保要将事件侦听器绑定到的父级在绑定时存在。