如何将click事件添加到iframe的动态元素?

时间:2017-09-04 05:16:12

标签: javascript jquery html iframe

我通过使用innerHTML(如下面的

)向iframe添加一些html元素
var iframe = document.getElementById('composer_frame'), iframedoc = iframe.contentDocument || iframe.contentWindow.document;

iframedoc.body.innerHTML = "<a id='myAnch'>Click</a>";

我希望通过点击锚点来编写一个应该是exicute的函数#34;#myAnch&#34;

3 个答案:

答案 0 :(得分:1)

试试这个:

$("#composer_frame").contents().find("#myAnch").on('click',function(){
    //do stuff
});

答案 1 :(得分:1)

你可以为这样的元素编写函数

$('#myAnch', iframedoc).click(function() {console.log("a");})

但你应该把这段代码放在父html页面上。

答案 2 :(得分:0)

说明: - 由于您尝试在iframe中的动态创建元素上添加事件,因此您必须通过父引用将其绑定。

这意味着基于父元素尝试找出动态添加的元素,然后在其上添加事件。(因为jQuery din直接识别动态添加的元素)

如下所示: -

$("#composer_frame").contents().find('#myAnch').on("click", function (e) {
    e.preventDefault();
    alert('clicked');
});

工作代码段: - https://jsfiddle.net/sycf9nz6/

This is called event-delegation