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

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

14

可以。

从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 );
}

4

是的,这是安全的。jQuery有多种设置处理程序的方法,唯一“不安全”的是$(document).bind("ready", handler)从jQuery文档中:

以下三种语法等价:

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

还有一种方式是$(document).bind("ready", handler)。它的行为类似于ready方法,但有一个例外:如果ready事件已经触发并且你尝试去绑定.bind("ready"),那么绑定的处理程序将不会被执行。用这种方法绑定的ready处理程序是在上述其他三种方法绑定的处理程序之后执行的。


1

可以。你可以把它放在一个函数里面,每当你调用该函数时,它就会触发。


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