从函数内部调用$(document).ready()是否安全?



如果我在函数中使用$(document).ready()处理程序,它是否仍然保证它内部的代码只在文档准备好时运行,即使文档准备好事件在过去已经发生?

可以。

来自jQuery ready函数源码。

// Catch cases where $(document).ready() is called after the
// browser event has already occurred.
if ( document.readyState === "complete" ) {
    // Handle it asynchronously to allow scripts the opportunity to delay ready
    return setTimeout( jQuery.ready, 1 );
}

是的,这很安全。jQuery有几种方法来设置这样的处理程序,唯一"不安全"的是$(document).bind("ready", handler)。来自jQuery文档:

以下三种语法都是等价的:

  1. $(document).ready(handler)
  2. $().ready(handler)(不推荐)
  3. $(handler)

还有$(document).bind("ready", handler)。它的行为类似于ready方法,但有一个异常:如果ready事件已经被触发,并且您尝试.bind("ready")绑定处理程序将不会被执行。准备好了处理程序以这种方式绑定的都是在任何绑定后执行的其他三个方法以上。

是。你可以把它放在一个函数中,当你调用那个函数时,它就会触发。

最新更新