2012-01-30 48 views
0

我加載頁面加載JavaScript的Web應用程序存在:jQuery代碼的元素不執行未在頁面加載

$(function() { 
    $('.modal-delete').click(function() { 
    alert(); 
    }); 
}); 

我有一個HTML頁面一系列按鈕的警報空白正在單擊時的消息框:

<button class="modal-delete btn danger"></button> 

工作正常。

但是,有一些AJAX調用產生更多的按鈕,就像上面的那些按鈕,但不是在頁面加載!他們可以隨時創建。這些按鈕不會執行任何操作,但它們只是用於加載警報。它們是相同的,但因爲它們在頁面加載時從來沒有存在過,所以Jquery代碼在這些按鈕上不起作用。我如何將相同的代碼附加到這些按鈕?

非常感謝:)。

回答

2

我想你會想jQuery的「活()」函數:

$('.modal-delete').live('click', function() { 
    alert(); 
}); 

這種結合是匹配的,而且元素在未來添加新元素時重新綁定:

「爲所有與當前選擇器匹配的元素添加事件處理函數,現在和未來」

+0

這取決於你使用的是什麼版本的jQuery。 jQuery 1.7+應該使用'on()',在1.7之前應該使用'delegate()',除非你使用的是一個非常舊的版本的jQuery(在1.4.2之前),這是唯一一次你應該使用'live()'編寫新代碼,因爲您不會有其他選項可用。 – 2012-01-30 13:34:39

+0

非常感謝您的支持,上次我看到的是1.4版本(ish),這可能會解釋我的建議。作爲一個觀點,每個人都有優勢/劣勢嗎?或者它只是命名約定/版本偏好? – dougajmcdonald 2012-01-30 13:37:04

1

變化的準備代碼這個...

$(function() { 
    $("document").on("click", ".modal-delete", function() { 
    alert("click"); 
    }); 
});