[英]Jquery click event fire twice
我正在使用 Jquery 构建一些东西,并且正在进行一些 Ajax 调用。 所以在我的 ajax 调用之后,我需要调用函数来再次跟踪对某些元素的点击。 这是此类函数的示例:
$(document).ready(function () {
initSomething();
});
function initSomething(){
$('.something').click(function(){
alert('hello');
});
}
现在是一个 ajax 函数:
$('#AddSomething').click(function(){
$.post('somewhere.php',{data},function(data){
initSomething();
});
});
问题是:我觉得当我 initSomething(); 第二次,它就像在文档就绪时调用的第一个 initSomething 已经跟踪的元素上读取单击事件。
所以我尝试了 e.preventDefault 和 e.preventPropagation() 之类的东西,但它似乎不起作用,我错过了什么?
感谢您的回答,祝您有美好的一天!
编辑:正如在答案中看到的,我忘了说 Ajax 调用正在 DOM 中插入新的 .something 元素......
编辑 2:这里有一个 jsfiddle: https ://jsfiddle.net/wpsnz7op/
尝试.off() api 删除已经附加的事件并重新分配事件,如下所示。
function initSomething(){
$('.something').off('click').click(function(){
alert('hello');
});
}
希望这可以帮助....
没有必要根据我在那里看到的代码重新绑定点击。
只需不要重新绑定,您就不会遇到多次点击问题。
使用事件委托代替。
$(document).on('click','.something',function(){
alert('hello');
});
那么就不需要调用initSomething();
ajax 之后的函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.