所以现在,我明白为了将一个事件侦听器附加到动态添加的元素,您必须在添加元素后重新定义侦听器。有什么办法可以绕过这个,所以你不必执行一整块额外的代码?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 –