<script>
jQuery(function($) {
$('#container').jstree();
});
</script>
$
传递到匿名函数,这是什么意思?
<script>
jQuery(function($) {
$('#container').jstree();
});
</script>
$
传递到匿名函数,这是什么意思?
美元符号($)实际上是jQuery函数的别名。根据文档,如果您将回调作为参数传递给此函数,则会在DOM准备就绪时执行。
那即使我明白......你能添加一个简单化的版本听起来太技术请? – AaronHatton
$
是jQuery
的别名。
所以,你也可以写jQuery('#container').jstree();
值得注意的是,'$'只是javascript中一个有效的变量名 - 像'a'或'b'--并非内在的魔法。这在我几年前第一次学习时并不明显。 –
另外值得注意的是,问题是关于匿名函数,而不是其内容。 – JJJ
jQuery(function($) {
// Your code using failsafe $ alias here...
});
和
$(function() {
// Document is ready
});
同时使用快捷方式$(文件)。就绪()和参数 写使用$别名故障安全jQuery代码,而不依赖于 全球别名。
它使“$”为局部变量,从而优雅地避免与任何其他可能使用“$”符号的变量的冲突。
这些功能都做同样的事情 - 执行一些代码时,DOM已准备就绪。
“$”和“jQuery的”作为一个参数被作为快捷方式,以避免重复这样的构建体共同创建了接受功能。接受一个接受$作为第一个参数的函数是一个进一步的语法糖 - 现在,您可以方便地使用闭包,而无需自行完成。
jQuery() — which can also be written as $() — searches through the DOM ...
因此:
$("div.foo");
等于jQuery("div.foo");
http://api.jquery.com/jQuery/#jQuery3
jQuery(function($) { // Your code using failsafe $ alias here... });
简而言之: $是指由JQuery设置来表示自身的全局变量。
在不那么短: JavaScript变量命名约定允许你开始以“$”变量“_”或类别的任何有效的Unicode字符“大写字母(陆)”,“小写字母( Ll)“,”Titlecase letter(Lt)“,”Modifier letter(Lm)“,”Other letter(Lo)“或”Letter number(Nl)“。
因此,你都不允许有变量$ _或它自己。很多JavaScript框架/库/东西利用这个事实来缩短他们的调用。
所以在JQuery的(Javascript库),美元符号是一个别名/参照JQuery的功能。
在这种情况下,第一行是相当于$(文件)。就绪(),它等待DOM运行之前完成装载。
换句话说,你要在DOM完成加载(几乎所有的功能真的)后运行要放在这里面,因为jstree功能()是。
代码看起来像在JavaScript中Module Pattern的尝试。好处是匿名函数有一个闭包,它有助于维护其中的变量隐私并维护其局部变量和函数的状态。
实现该模式正确的方法是:
(function($) {
...
})(jQuery);
其中(...)()
是IIFE的例子(立即调用Function Expression)。该函数表达式被后()
,这其中是否包含jQuery
将通过jQuery
功能到匿名函数的范围为$
调用,因为这是它作为参数名。这种模式的好处是人们可以编写jQuery插件,并可以维护自己的jQuery函数和变量副本,并随时调用它们,这有助于解决名称冲突。
目前接受的答案是不正确地解释文档,这只是说明如果你有一个函数声明,你可以在文档准备好时通过传递给jQuery函数来执行它作为回调函数,相当于jQuery的$(document).ready(function(){...});
的可能重复[这是什么(函数($){...})(jQuery的);做/是什么意思?(http://stackoverflow.com/questions/2464635/what-does-function-jquery-do-mean) – JJJ