簡體   English   中英

帶有點擊的jQuery load()動態內容被加載次數被觸發

[英]jQuery load() dynamic content with clicks get fired as many times as loaded

我通過jQuery load()加載內容,但是每次加載給定頁面時,頁面上的點擊都會被觸發多次。 為什么??

此處的小提琴是: http : //jsfiddle.net/ZUZ3L/ph3tH/2/

只需將您的點擊處理結果放到load

$(document).ready(function() {
    function loadContent() {
        $(".ajaxContainer").load("http://fiddle.jshell.net/ #actions", function() {
            alert("Done");                
        });
    }

    $(".load").click(loadContent);
    loadContent();
});​

更新小提琴

每次加載內容時,都執行以下行:

$(".load").click(loadContent);

這會在事件處理程序列表中添加一個新的事件處理程序,以便在單擊.load執行。 您執行了三次函數,現在您有了三個相同的處理程序,每次單擊都會觸發這些處理程序。

因為您要調用該函數兩次,請嘗試以下操作:

$(document).ready(function() {
    function loadContent() {
        $(".ajaxContainer").load("http://fiddle.jshell.net/ #actions", function() {
            alert("Done");
        });
    }
    loadContent();
    $(".load").click(loadContent);

});

http://jsfiddle.net/ph3tH/4/

這是因為您要多次添加click事件。

每次運行代碼時,都會重新定義click函數。 重新定義單擊后,它不會替代上一個,而是每次“單擊”事件發生時,它將被添加到要執行的堆棧中。 這適用於jQuery中的所有事件。

通過AJAX加載時,文檔中的var和事件仍然保留。 這意味着您只是在每次運行ajax調用時要執行的函數調用之上添加一層

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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