将事件绑定到动态创建的 iframe 元素

Posted

技术标签:

【中文标题】将事件绑定到动态创建的 iframe 元素【英文标题】:bind event to dynamically created iframe element 【发布时间】:2014-10-15 05:32:40 【问题描述】:

我想将事件侦听器绑定到 DOM 中尚不存在的元素。现在这将是 jQuery.on() 的情况。

但在这种情况下,我必须将事件绑定到 iFrame 中的元素。这可以由

管理
$("#iFrame").contents().find(".my_element").bind(...

等等。但是我的情况是,该元素尚未出现在 iFrame-Document 中(它是由用户交互添加的),因此 .find() 将返回一个空数组并且该事件不会被绑定。

是否甚至可以将事件侦听器绑定到稍后创建的 iFrame 特定元素?我只找到现有元素的解决方案,体育内容()和查找()。

提前致谢!

【问题讨论】:

我会将事件更改或准备好分配给 iframe,在回调中我会尝试像您写的那样分配。 所以您想将事件绑定到尚不存在的元素?为什么? 【参考方案1】:

试试这个

$("#iframe").load(function()
    $("#iFrame").contents().find(".my_element").bind('click',function()
       // Your code here
    );
);

希望这会有所帮助.. 干杯..

【讨论】:

也许我没有正确描述我的问题。该元素是通过另一个用户输入创建的,因此它永远不会自动出现在 DOM 中。所以 'find' 永远不会返回任何东西。【参考方案2】:

我找到了一个行之有效的解决方案。如果这不起作用,只需通过alert( $("#iframe").length ); 检查 iframe 是否存在。值必须大于 0。

$("#iframe").contents().find('body').on("click", ".my_element", function (e)

    alert("Give it to me dude ;)");
);

【讨论】:

以上是关于将事件绑定到动态创建的 iframe 元素的主要内容,如果未能解决你的问题,请参考以下文章

jQuery动态创建的元素为啥不能绑定事件

在由 AJAX 插入的动态创建元素上绑定事件(复选框)

动态创建元素的事件绑定?

动态创建元素的事件绑定?

动态创建元素的事件绑定?

动态创建元素的事件绑定?