从函数内部调用$(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文档 :
以下所有三种语法都是等效的:
$(document).ready(handler)
$().ready(handler)
(不建议这样做)$(handler)
还有
$(document).bind("ready", handler)
。 这与ready方法的行为类似,但有一个例外:如果ready事件已经触发并且您尝试.bind("ready")
,则不会执行绑定的处理程序。 以这种方式绑定的就绪处理程序在被上述其他三种方法绑定后执行。
是。 你可以把它放在一个函数中,只要你调用那个函数它就会触发它。