从函数内部调用$(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") ,则不会执行绑定的处理程序。 以这种方式绑定的就绪处理程序在被上述其他三种方法绑定后执行。

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