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…你在做什么,出了什么问题。确保要将事件侦听器绑定到的父级在绑定时存在。