在IFRAME中附加单击事件

时间:2012-02-07 15:40:26

标签: jquery

基本上我有一个显示给定页面的IFRAME。我在加载时使用jQuery在IFRAME中附加了许多DIV:

$('#portal').load(function(){
    $('#portal').contents().find('.callout').append('<div class="overlay">Test</div>');
});

(#portal是IFRAME)

现在我想将click事件处理程序附加到这些新DIV。我相信因为我正在动态创建DIV,所以我需要使用on()函数,但我无法做到这一点。我试过了:

$('#portal').on('click', '.overlay', function(){
    alert("Test");
});

以上两段代码都在JS文件中,只能在父页面上访问,即IFRAME本身不引用JS文件。

2 个答案:

答案 0 :(得分:3)

$('#portal').on(..)更改为$('#portal').contents().find('body').on(..)

$('#portal').contents().find('body').on('click', '.overlay', function(){
    alert("Test");
});

答案 1 :(得分:0)

确保iFrame具有唯一的名称,然后尝试使用此跨浏览器解决方案:

$('#portal').load(function(){
    $('<div class="overlay">Test</div>')
        .click(function(){
            alert("Test");
        }).appendTo(window.frames[this.name].document.body));
});