jQuery ready()的四种变体 - 有什么区别?

Pat*_*ney 10 jquery dom document-ready

我已经看到了四种不同的方法来告诉jQuery在文档准备好时执行一个函数.这些都是等价的吗?

$(document).ready(function () {
  alert('$(document).ready()');
});  

$().ready(function () {
  alert('$().ready()');
}); 

$(function () {
  alert('$()');
});     

jQuery(function ($) {
  alert('jQuery()');
}); 
Run Code Online (Sandbox Code Playgroud)

geo*_*wa4 13

没有区别.

$是一样的jQuery.如果您查看未经授权的源,您将看到var $ = jQuery = ...或出现这种情况.

jQuery函数检查它的参数类型,如果它是一个函数,它将其视为相同$(document).ready(...)

jQuery没有参数的调用默认使用document.所以$()并且$(document)完全相同.在Firebug中尝试一下.

  • 这并不能解释第二个问题 (2认同)
  • 它是默认使用文档还是由于jQuery在传递没有args后通过链接返回? (2认同)

Dav*_*her 5

re:Geroge IV关于$()== $(文档)正确的评论.从未公开的源(init是内部调用的):

init: function( selector, context ) {
    // Make sure that a selection was provided
    selector = selector || document;
Run Code Online (Sandbox Code Playgroud)

同样来自源代码,以备份之前的对话:

// HANDLE: $(function)
    // Shortcut for document ready
    } else if ( jQuery.isFunction( selector ) )
        return jQuery( document ).ready( selector );
Run Code Online (Sandbox Code Playgroud)

这应该是社区维基.我一直对jquery的内部工作感兴趣,现在我有借口开始寻找:-)