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

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

4

2 回答 2

2

您的加载事件应包含在DOMready ..

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

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

无需将回调包含在DOM ready处理程序中..

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

于 2013-06-26T20:09:24.357 回答
1

虚拟.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,最后一个打印是'虚拟加载后虚拟已经加载',我知道为什么工作正常,但序列工作正常.

更新

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

第一个:虚拟回调第二个:虚拟已加载.../错误!/

于 2013-06-26T21:12:17.510 回答