$(function (){})和(function ($){})之间的区别

3
我很困惑关于“what's the actual meaning of”的实际含义。
(function ($){})(jQuery) 
//in plugin

并且

$(function (){})
//in page.

请帮我澄清一下这个问题。

2
第一个立即执行并将jQuery传递给函数,第二个则等待DOM准备就绪。 - adeneo
我对jQuery很新,请告诉我“将jQuery传递给函数”是什么意思? - jason
$(function(){}); -> $(document).ready(function(){});。它们是相同的。而 (function($){ .... })(jQuery); 是编写插件的结构。 - sathish
@adeneo 你应该回答而不是评论 ;) - sp00m
好的,(function($){ .... })(jQuery); 是一个结构体,但它实际上是什么意思,也就是这个结构体具体做什么。 - jason
它定义了一个函数function($){ .... },立即调用并将jQuery传递给它,即在函数内部$指的是jQuery。这样做是因为当您包含其他库时,全局$可能不会引用jQuery - Felix Kling
3个回答

5

This:

(function ($){})(jQuery) 

这是一个被定义并立即调用的函数,JQuery对象作为参数传入。 $ 是对 JQuery 的引用,您可以在函数内部使用它。这与下面的代码等效:

var myFunc = function ($){};
myFunc(jQuery);

This:

$(function (){})

这是一个调用JQuery的方法,传入一个函数作为参数,在文档加载完成后执行。


谢谢,我现在明白了。唯一不明白的是为什么要将jQuery作为参数传递给myFunc(myFunc(jQuery))。 - jason
说实话,我只是猜测,但这样做的部分原因可能是让函数在其参数列表中声明其依赖关系,而不是依赖全局变量。这被称为“自调用函数”。(http://sarfraznawaz.wordpress.com/2012/01/26/javascript-self-invoking-functions/) - Steve Wilkes

1
$(function(){}); === $(document).ready(function(){});. 

以上两者是相同的。

(function($){ .... })(jQuery); 是编写插件的结构。


好的,(function($){ .... })(jQuery); 是一个结构体,但它在实际中意味着什么,也就是这个结构体具体做什么。 - jason
1
@sathish:请查看实际答案。 - Vivek S
@InternalServerError 你好,我明确提到 $(function(){}); 和 $(document).ready(function(){}); 是相同的......而不是 (function($){ .... })(jQuery)... - sathish
(function($){ .... })(jQuery); 是编写插件的结构。它还像包装器一样包裹我们的函数以避免冲突。如果我们想编写自己的插件,可以这样写:$.fn.extend( .. - sathish

0

这两者不相同。下面将清楚地解释每件事情,

(function($){
  /* code here runs instantly*/
  $('document').ready(function(){ // this function is exactly the same as the one below
        /* code here runs when dom is ready */
  });
  $(function(){ // this function is exactly the same as the one above.
        /* code here runs when dom is ready */
  }
)(jQuery); // jQuery is a parameter of function($) {}

参考:http://forum.jquery.com/topic/what-s-the-difference-between-function-code-jquery-and-document-ready-function-code


function($){} 的意思是什么? - jason
我们可以在“(function($){})”内部编写ready函数吗?我认为这是不必要的。 - sathish
它只是解释了方法之间的区别。描述在 /* */ 中。 - Vivek S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接