因此,现在,我知道为了将事件侦听器附加到dynamically添加的元素,您必须在添加元素后重新定义侦听器。
有什么方法可以绕过这一步,这样你就不必执行一整块额外的代码了吗?
发布于 2012-08-22 09:48:22
使用.on()
,您只需定义一次函数,它将对任何动态添加的元素执行。
例如
$('#staticDiv').on('click', 'yourSelector', function() {
//do something
});
发布于 2012-08-22 09:47:54
$(document).on('click', 'selector', handler);
其中,click
是事件名称,handler
是事件处理程序,就像对函数或匿名函数function() {}
的引用一样
PS:如果你知道你要添加动态元素的特定节点--你可以指定它而不是document
。
发布于 2014-10-02 02:24:21
您将动态生成这些元素,因此在页面加载时应用的任何侦听器都将不可用。我已经用正确的解决方案编辑了你的小提琴。基本上,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')));
});
https://stackoverflow.com/questions/12065329
复制相似问题