【问题标题】:event handler on dynamically added element not working with select2 plugin动态添加元素上的事件处理程序不适用于 select2 插件
【发布时间】: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


【解决方案1】:

Select2 会杀死下拉菜单中的所有鼠标事件。 到目前为止,我发现的唯一解决方案是使用内联 onclick

Here 也是一个解决方案,可以帮助其他有类似问题的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    • 2011-08-11
    • 2012-04-06
    • 2010-12-04
    • 1970-01-01
    相关资源
    最近更新 更多