如果在dom加载后调用$(document).ready会发生什么?

时间:2014-08-19 00:51:35

标签: jquery dom

我正在调试一些代码(我没写过),并且在初始DOM.ready调用之后通过包含以下内容的ajax请求将一些JavaScript拉入页面:

$(document).on('ready', function(){
    $('#input1').attr('data-defaultvalue',123);
});

我是否正确地认为该函数中的代码永远不会触发,因为它将等待已经发生的事件。

3 个答案:

答案 0 :(得分:2)

  

还有$(document).on( "ready", handler ),已弃用   jQuery 1.8。这与ready方法的行为类似,但如果是   ready事件已经触发,你尝试.on( "ready" )绑定   处理程序将不会被执行。以这种方式绑定的现成处理程序是   在被上述其他三种方法约束后执行。

Source

您可以非常轻松地使用此代码进行测试。 .ready会触发,但.on('ready'...不会。

setTimeout(function() {
    $(document).ready(function() { 
        alert(".ready");
    });
    $(document).on('ready', function() { 
        alert(".on('ready')");
    });
}, 5000);

http://jsfiddle.net/n65Leobh/

答案 1 :(得分:0)

如果在初始页面加载后加载了代码,那么该代码就不会运行。如果ready事件已经触发,然后加载了此代码,则无法设置它来监听ready事件。

真正唯一的解决方法是,如果JavaScript正在使用AJAX。

答案 2 :(得分:0)

来自jQuery docs

  

还有$(document).on( "ready", handler )已弃用   jQuery 1.8 。这与ready方法的行为类似,但如果是   ready事件已经触发,你尝试.on( "ready" )绑定   处理程序将不会被执行。以这种方式绑定的现成处理程序是   在被上述其他三种方法约束后执行。

所以看来你说代码不能正确执行是正确的。将其更改为绑定到DOM ready事件的其他方式将很容易解决这个问题。