在JQuery中,我如何检查DOM是否已准备好?

12

可能是重复问题:
javascript domready?

我想要检查$(function(){ });是否“准备就绪”。

如果DOM已经准备就绪,返回true;否则返回false。


请重新表述一下吗?我不太明白你想要什么。在回调函数运行之前,DOM已经准备好了(在你的示例中,是function() {})。 - cHao
人们(包括jQuery API文档)称其为“文档就绪函数”。;-) - Greg Pettit
4个回答

28
从jQuery代码中:
如果 ( jQuery.isReady ) { fn.call( document, jQuery ); }

6
在此提醒一下,这不是一个经过记录的属性,jQuery 的作者可能会在任何时候未经通知地更改或删除该属性。使用时需自行承担风险,并在更新 jQuery 时格外小心。 - Ryan Wheale

15
你可以使用显式调用。
$(document).ready(function(){
  // do this after dom is ready
});

或者使用快捷方式

$(function(){
  // do this after dom is ready
});

当你使用其他库时,将jQuery包装在匿名函数中也非常有用;编写jQuery插件时也非常常见。

(function($, window){
  // use $ here freely if you think any other library might have overridden it outside.
  $(function(){
    // do this after dom is ready
  });
})(jQuery, window);

最后,你可以使用jQuery.isReady(布尔值)

if (jQuery.isReady) {
  // do something
}

您也可以使用 jQuery(function($) { /* 在此块中,即使另一个库通常被分配给 $,jQuery 也被别名为 $ */ }); - redbmk

2

只有在DOM准备就绪后,该函数才会执行。这就是将代码包装在该函数中的目的;)。话虽如此,一些内容(如图像、延迟脚本等)可能尚未完全加载或渲染,所以请注意。


1

您可以使用jQuery.isReady,但它未记录在文档中,应避免使用。

如果您只需要在DOM准备就绪后运行一些内容,则可以直接调用

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

像往常一样 - 如果DOM已准备好,它将立即运行代码,否则它将等待直到准备就绪。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接