2013-10-02 149 views
0
<script> 
jQuery(function($) { 
    $('#container').jstree(); 
}); 
</script> 

$传递到匿名函数,这是什么意思?

+0

的可能重复[这是什么(函数($){...})(jQuery的);做/是什么意思?(http://stackoverflow.com/questions/2464635/what-does-function-jquery-do-mean) – JJJ

回答

3

jQuery Documentation

美元符号($)实际上是jQuery函数的别名。根据文档,如果您将回调作为参数传递给此函数,则会在DOM准备就绪时执行。

+2

那即使我明白......你能添加一个简单化的版本听起来太技术请? – AaronHatton

0

$jQuery的别名。

所以,你也可以写jQuery('#container').jstree();

+0

值得注意的是,'$'只是javascript中一个有效的变量名 - 像'a'或'b'--并非内在的魔法。这在我几年前第一次学习时并不明显。 –

+0

另外值得注意的是,问题是关于匿名函数,而不是其内容。 – JJJ

2

Documentation

jQuery(function($) { 
    // Your code using failsafe $ alias here... 
}); 

$(function() { 
    // Document is ready 
}); 

同时使用快捷方式$(文件)。就绪()和参数 写使用$别名故障安全jQuery代码,而不依赖于 全球别名。

1

它使“$”为局部变量,从而优雅地避免与任何其他可能使用“$”符号的变量的冲突。

这些功能都做同样的事情 - 执行一些代码时,DOM已准备就绪。

“$”和“jQuery的”作为一个参数被作为快捷方式,以避免重复这样的构建体共同创建了接受功能。接受一个接受$作为第一个参数的函数是一个进一步的语法糖 - 现在,您可以方便地使用闭包,而无需自行完成。

-1

JQUERY DOC :

jQuery() — which can also be written as $() — searches through the DOM ... 

因此:

$("div.foo");等于jQuery("div.foo");

-1

简而言之: $是指由JQuery设置来表示自身的全局变量。

在不那么短: JavaScript变量命名约定允许你开始以“$”变量“_”或类别的任何有效的Unicode字符“大写字母(陆)”,“小写字母( Ll)“,”Titlecase letter(Lt)“,”Modifier letter(Lm)“,”Other letter(Lo)“或”Letter number(Nl)“。

因此,你都不允许有变量$ _或它自己。很多JavaScript框架/库/东西利用这个事实来缩短他们的调用。

0

代码看起来像在JavaScript中Module Pattern的尝试。好处是匿名函数有一个闭包,它有助于维护其中的变量隐私并维护其局部变量和函数的状态。

实现该模式正确的方法是:

(function($) { 
    ... 
})(jQuery); 

其中(...)()是IIFE的例子(立即调用Function Expression)。该函数表达式被后(),这其中是否包含jQuery将通过jQuery功能到匿名函数的范围为$调用,因为这是它作为参数名。这种模式的好处是人们可以编写jQuery插件,并可以维护自己的jQuery函数和变量副本,并随时调用它们,这有助于解决名称冲突。

目前接受的答案是不正确地解释文档,这只是说明如果你有一个函数声明,你可以在文档准备好时通过传递给jQuery函数来执行它作为回调函数,相当于jQuery的$(document).ready(function(){...});