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

时间:2011-08-22 01:41:57

标签: javascript jquery javascript-events

如果我在函数中使用$(document).ready()处理程序,它是否仍然保证其中的代码只有在文档准备就绪时才会运行,即使文档就绪事件过去发生得很好?

3 个答案:

答案 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

  

以下所有三种语法都是等效的:

     
      
  1. $(document).ready(handler)
  2.   
  3. $().ready(handler)(不建议这样做)
  4.   
  5. $(handler)
  6.         

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

答案 2 :(得分:1)

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