document.ready和iframes

时间:2012-02-09 22:11:20

标签: javascript jquery html iframe

我的网页加载了iframe。 iframe包含一个小标记,包括“Click”

我有一个js文件,包含它控制按钮的点击事件。 目前,JS文件包含在我的iframe加载的小页面中。

我想在包含页面级别包含我的javascript库,而不是在iframe加载的页面中。所以,我感动了它。那些了解你的东西的人,听到的不会感到惊讶 当我这样做时,click()事件停止了。

                    $(document).ready(function(){

                          $('#filter_button').click(function(){
                                    //operations
                            });

                    });

我松散地理解,这是因为.ready函数在iframe加载之前遍历DOM ...但我不知道如何处理它。有什么帮助吗?

3 个答案:

答案 0 :(得分:3)

如果要在运行代码之前确保所有内容都已加载,图像,iframe等(不仅仅是DOM已准备好),您可以使用jQuery的.load()代替{{1 }}:

$(document).ready(function(){});

答案 1 :(得分:3)

尝试使用带有回调的jQuery load()方法,在加载完成后加载页面上的事件。

将path_to_page.html替换为您当前的iframe网址:

$(document).ready(function(){
    $('#loadedContent').load('path_to_page.html', function() {
        $('#filter_button').click(function(){ 
        //operations 
        }); 
    });
});

用以下内容替换你的iframe:

<div id="loadedContent"></div>

答案 2 :(得分:0)

我在我的主页面上设置了iframe attr():

$("#my_iframe") .attr( "src", template ) // template is the iframe content path
                .one( "load", function() {

                    $("#my_iframe")[0].contentWindow.$('body').trigger('contentReady');

                } ).each( function() {
                    if( this.complete ) //trigger load if cached in certain browsers
                        $(this).trigger("load");
                } );

然后以这种方式将我的代码放在iframe中:

$(window).on( "contentReady", function(e) {
    // code I usually initiate with document ready
} );

我不是javascript专家。 attr()...... on。(&#34; load&#34; ...技术我从其他人那里学到了交换图像。所以我把它和我的iframe脚本结合起来。它对我有用。希望这是正确的要这样做,没有人会因此而投票给我......