【发布时间】:2013-09-27 15:39:39
【问题描述】:
我以前做过这百万次,但这次根本行不通! 我有一个函数可以动态添加带有链接的表单,该链接将充当按钮
content += '<a name="btn-opprettKontakt" id="btn-opprettKontakt" class="btn-opprettNy btn btn-small btn-primary pull-right" data-action="opprettKontakt">Opprett</a>';
return content;
然后我有这个链接的事件处理程序
$('body').on('click','.btn-opprettNy', function() {
alert('button clicked');
});
表单在一个select2容器内,也是动态添加的,所以除了'body'之外没有父元素。但这永远不会触发。
我还有一个用于检查数据操作的所有“按钮”元素的事件处理程序,该处理程序适用于所有其他按钮。如果我将此链接更改为按钮,它也不会触发。
我在这里遗漏了什么吗?如果我使用 document.ready 上存在的元素,例如 'body' , .on() 应该适用于动态添加的元素,对吗? 也许 select2 容器搞砸了?
我在动态添加的元素上有其他事件处理程序,它们工作得很好。
更新
Select2 会杀死下拉菜单中的所有鼠标事件。到目前为止,我发现的唯一解决方案是使用内联 onclick
【问题讨论】:
-
请使用live而不是click
-
live 现已弃用。
-
你能重现jsfiddle.net中的问题吗?您在控制台上看到任何错误吗?
-
嗯。我没有使用select2。但我觉得 select2 使用了一个内部有正文的 iframe。 jsfiddle.net/LUsMb/16。可能那是一团糟。
-
您的事件处理程序没有问题!如果您多次添加此超链接可能会出现问题,因为它具有 id 属性,这可能是您的问题吗?
标签: javascript jquery jquery-select2