我在我的網站上動態生成按鈕。要檢測這些元素的click
狀態,我相信你需要使用jQuery的on()
。我嘗試了以下,但它似乎並沒有工作。難道我做錯了什麼?jQuery on()不工作
$('.press').on('click', function() {
alert('clicked'); //Does not trigger on dynamic elements
});
當您查看我的JSFiddle,注意點擊動態生成的按鈕不產生結果。
我在我的網站上動態生成按鈕。要檢測這些元素的click
狀態,我相信你需要使用jQuery的on()
。我嘗試了以下,但它似乎並沒有工作。難道我做錯了什麼?jQuery on()不工作
$('.press').on('click', function() {
alert('clicked'); //Does not trigger on dynamic elements
});
當您查看我的JSFiddle,注意點擊動態生成的按鈕不產生結果。
當你要委託事件處理,選擇安裝在將包含動態元素(全部達到document
方式)的元素,以及.on
第二個參數是選擇:see documentation
$(document).on('click', '.press', function() { ...
我建議在使用委派時儘可能使用特定的選擇器,這樣需要進行最少量的遍歷。不過,它通常並沒有太大的區別。
代表事件
$('body').on('click','.press', function() {
alert('clicked'); // now it triggers on dynamic elements
});
您可以用static parent container
更換閥體..
你的方法不會作爲元素工作仍在not available in the DOM
當附加事件。
感謝您的解釋。我現在明白了:) – Jon
應該
$(document).on('click', ".press", function() {
alert('clicked');
});
$('.press')
目前發現的所有元素在文檔中,並結合對他們的事件,所以它不會在要素的工作,你後來因爲添加他們在當時不存在被選中。
$(document)
選擇document
,它始終存在於任何地方,並將事件綁定到它。然後過濾.press
,以便只有匹配.press
的元素纔會實際調用回調。
請注意,您應該選擇一個父元素,該元素是.press
元素的公共父元素,並且此時存在,而不是使用document
。
謝謝你的解釋。我現在明白了:) – Jon
謝謝你的解釋。我現在明白了:) – Jon