所以現在,我明白爲了將一個事件偵聽器附加到動態添加的元素,您必須在添加元素後重新定義偵聽器。有什麼辦法可以繞過這個,所以你不必執行一整塊額外的代碼?Jquery將事件偵聽器添加到動態添加的元素
68
A
回答
127
使用.on()
你可以定義你的函數一次,它會執行任何動態添加的元素。
例如
$('#staticDiv').on('click', 'yourSelector', function() {
//do something
});
38
$(document).on('click', 'selector', handler);
凡click
是一個事件的名稱,handler
是事件處理程序,類似的參考函數或匿名函數function() {}
PS:如果你知道你要添加動態元素的特定節點 - 你可以指定它而不是document
。
+6
不要使用'$(文件)'。該事件應該綁定到最近的靜態父級。 –
+3
@Joseph Silber:我爲此添加了PS。 「不要使用」太過分了。有使用它的有效案例(甚至沒有提及它在jquery文檔中指定:http://api.jquery.com/live/) – zerkms
1
當添加與jQuery插件調用新的元素,你可以做如下所示:
$('<div>...</div>').hoverCard(function(){...}).appendTo(...)
2
您要動態生成這些元素應用在頁面加載,所以任何聽者不會能得到的。我用正確的解決方案編輯了你的小提琴。基本上,jQuery通過將它附加到父元素並將其向下傳播到正確的動態創建的元素來爲將來的綁定保存事件。
$('#musics').on('change', '#want',function(e) {
$(this).closest('.from-group').val(($('#want').is(':checked')) ? "yes" : "no");
var ans=$(this).val();
console.log(($('#want').is(':checked')));
});
相關問題
- 1. 添加事件偵聽器來動態添加html元素
- 2. 如何將事件偵聽器添加到動態元素ID?
- 3. 添加事件偵聽器到動態創建元素
- 4. 添加一個偵聽器到動態添加的元素
- 5. 在PolymerJs的動態元素上添加事件偵聽器
- 6. 動態添加事件偵聽器
- 7. 動態添加事件偵聽器
- 8. 獲取DOM元素並動態添加事件偵聽器
- 9. 將javascript中的多個事件偵聽器添加到元素
- 10. 將事件偵聽器添加到iframe
- 11. 將事件偵聽器添加到JFrame
- 12. 將「this」添加到事件偵聽器?
- 13. 將事件偵聽器添加到動態容器中
- 14. 將多個事件偵聽器添加到一個元素
- 15. 事件偵聽器添加到文檔中對元素存在檢查,然後添加事件偵聽器
- 16. 將事件偵聽器添加到Symfony3中的動態添加字段
- 17. jquery添加事件到動態元素
- 18. 動態添加點擊事件偵聽器並將郵件添加到div元素時的遞歸太多
- 19. 將jquery事件偵聽器添加到登錄表單
- 20. 添加事件偵聽器的錯誤
- 21. AS3添加enterFrame事件偵聽器添加到雪碧子
- 22. NetworkInformationException添加的偵聽到NetworkAvailabilityChanged事件
- 23. 如何在元素轉換時添加事件偵聽器?
- 24. 在元素焦點上添加事件偵聽器
- 25. 添加動態添加元素的Addinf事件監聽器 - HTML/JS
- 26. 如何將事件偵聽器添加到跨域iframe中的元素
- 27. jquery將點擊事件添加到動態創建的元素
- 28. 添加一個動態命名的事件偵聽器
- 29. 將偵聽器添加到給定類的所有元素
- 30. 在onCreate中添加事件偵聽器
香草JS的解決方案:http://stackoverflow.com/a/27373951/1385441 –