jQuery - 在父文档的iFrame中触发事件

时间:2011-02-18 21:26:25

标签: jquery

有什么理由说这不起作用:

父文件

$(document).ready(function($) {
        $('.upload-media').click(function(){
            if( $(this).parent().find('iframe')[0] )
                return false;
            $(this).parent().append('<iframe class="media-iframe" src="'+this.href+'"></iframe>');
            var ifr = $(this).parent().find('iframe');
            $(document).bind('closeFrame', function(){ alert("event"); });
            return false;   
        }); 
    });

的iFrame

$(document).ready(function() {
    $("#media-frame-close").click(function(){
        window.parent.$(window.parent.document).trigger('closeFrame');
        return false;
    });
});

看起来非常直接,我已经尝试了父母。而不是window.parent,这也不起作用:(

2 个答案:

答案 0 :(得分:2)

我无法找到一种方法来访问文档的jQuery触发器,但是如果你执行以下操作就可以实现同样的目的。

$(document).ready(function(){
    $('.frame').click(function(){
        if( $(this).parent().find('iframe')[0] )
        {
            return false;
        }

        $(this).parent().append('<iframe class="media-iframe" src="'+this.href+'"></iframe>');

        var ifr = $(this).parent().find('iframe');

        // Adding function directly to the document rather than using jQuery.bind/trigger
        document.closeFrame = function(){ alert("event"); };

        return false;
    });
});

$(document).ready(function(){
    $("#media-frame-close").click(function(){
        window.parent.document.closeFrame();
        return false;
    });
});

当然这污染了文档对象,但它会做你想要的。

答案 1 :(得分:1)

top.document在iframe中运行良好(假设iframe也有jQuery)

$('#ID', top.document).someFunction();