如果我在函数中使用$(document).ready()
处理程序,它是否仍然保证其中的代码只有在文档准备就绪时才会运行,即使文档就绪事件过去发生得很好?
答案 0 :(得分:14)
是
来自jQuery ready
函数source。
// 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 );
}
答案 1 :(得分:4)
是的,这是安全的。 jQuery有几种方法来设置像这样的处理程序,唯一“不安全”的方法是$(document).bind("ready", handler)
。 From the jQuery docs:
以下所有三种语法都是等效的:
$(document).ready(handler)
$().ready(handler)
(不建议这样做)- 醇>
$(handler)
还有
$(document).bind("ready", handler)
。这与ready方法的行为类似但只有一个 exception:如果ready事件已经触发并且您尝试了.bind("ready")
绑定的处理程序将不会被执行。准备好的处理程序 绑定这种方式是在被其他三种方法绑定后执行的 上方。
答案 2 :(得分:1)
是。你可以将它放在一个函数中,只要你调用那个函数它就会触发。