簡體   English   中英

Jquery 點擊事件觸發兩次

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM