加载另一个页面后的jQuery运行时就绪事件

时间:2013-06-26 20:07:10

标签: jquery events document-ready

var x = $("<div ></div>");
$('body').append(x);
x.load('page.html'
    , function() {
        $(document).ready(
            function (){
            //useful stuff here;
            }
        );  
    });

我希望在page.html完全加载后执行就绪回调函数,并且已经在我的“div”中执行了所有脚本。
这个例子有效。
我的问题是:这是我正在做的事情的正确方法吗?还有其他方法吗? 在这种情况下,准备事件背后的逻辑是什么?它应该应用于“文件”,“这个”还是“x”?

2 个答案:

答案 0 :(得分:2)

你加载的事件应该被DOM准备好...

$(document).ready(function () {
    var x = $("<div ></div>");
    $('body').append(x);
    x.load('page.html', function () {

        //useful stuff here;
    });
});

不需要将回调包含在DOM ready处理程序..

在这种情况下适用,因为您似乎没有在页面上选择任何已存在的元素。所以它将在没有DOM ready处理程序

的情况下工作

答案 1 :(得分:1)

dummy.html

<SCRIPT>
    $(document).ready(
        function(){
            var x = $("<div >hola</div>");
            $('body').append(x);
            x.load('dummy2.html', function() {

                console.log('dummy callback');

                $(document).ready(
                    function (){
                    console.log('dummy has loaded after dummy2 has loaded');
                    //useful stuff here;
                    }
                );
            });
        }
    );
</SCRIPT>

dummy2.html

 <SCRIPT>
    $(document).ready(
        function(){
            console.log('dummy 2a has load');
        }
    );
    $(document).ready(
        function(){
            console.log('dummy 2b has load');
        }
    );


</SCRIPT>

此示例显示了如何处理序列,首先打印虚拟回调',第二个:虚拟2a和虚拟2b,最后一个打印是'dumy已经加载了虚拟已加载',我知道为什么工作正常,但是序列工作正常。

更新

如果删除行$(document).ready,则序列为

首先:虚拟回调 第二个:假装已经加载了...... / 错了! /