2012-10-08 36 views
-1

我有這樣的代碼如何更換jQuery的生活與功能

$(".myclass").on("click", function(e){ 

    alert('Hello'); 

}); 

現在它不工作dynamicaly添加的元素

我怎麼可以用這樣的直播功能

+0

請看看:[http:// stackoverflow。COM /一個/ 12690212] [1] [1]:http://stackoverflow.com/a/12690212 –

+0

[jQuery的文檔(http://api.jquery.com/live)可能是一個好地方開始... – nbrooks

回答

4

要使用它,就像生活,你必須使用"delegation",這意味着你附加的處理程序是從開始存在,如父元素:

$(document).on('click', '.myclass', function(e){ 

    alert('Hello'); 

}); 

說明它是什麼在docs說:

事件處理程序僅綁定到當前選定的元素;在代碼調用.on()時,頁面上必須存在 。 要確保元素存在並且可以選擇,請在頁面上的HTML標記中的 HTML標記中對元素執行文檔就緒處理程序內的事件 綁定。如果新頁面被注入頁面, 選擇元素並附加事件處理程序,當新的HTML被放置到頁面中時,頁面中的內容爲 。或者,使用委託事件來附加處理程序事件 ,如下所述。

此外,如果你擔心性能問題,嘗試將處理程序爲「低」成爲可能:

附加附近的文檔 樹可降解的頂部變成了委託的事件處理程序性能。每次事件發生時,jQuery必須 將該類型的所有附加事件的所有選擇器與從事件目標到 文檔頂部的路徑中的每個 元素進行比較。爲獲得最佳性能,請將文檔 位置的委派事件附加到儘可能靠近目標元素的位置。避免過度使用 文檔或document.body來處理大型 文檔上的委派事件。

0

您需要包括jQuery version 1.7及以上在您的代碼中。

因爲您正在動態添加您需要委派事件的元素。

$("body").on("click",'.myclass', function(e){ 

    alert('Hello'); 

}); 

事件不會附着於其中加入後點擊事件是associated..That您需要將事件添加到它增加了事件的子事件,由於事件冒泡父容器的原因的元素..

+0

我有1.8版本 – user26