[英]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.