0
<script>
jQuery(function($) {
    $('#container').jstree();
});
</script>

$传入匿名函数,是什么意思?

4

9 回答 9

2

阅读文档

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

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

使用 $(document).ready() 的快捷方式和使用 $ 别名编写故障安全 jQuery 代码的参数,而不依赖于全局别名。

于 2013-10-02T12:05:31.513 回答
2

jQuery 文档

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

于 2013-10-02T12:03:47.980 回答
1

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

这些函数都做同样的事情——当 DOM 准备好时执行一些代码。

接受函数作为参数的“$”和“jQuery”被创建为快捷方式,以避免重复这种常见的结构。接受一个接受 $ 作为其第一个参数的函数是进一步的语法糖 - 现在您可以方便地使用闭包,而无需自己做。

于 2013-10-02T12:06:04.907 回答
1

http://api.jquery.com/jQuery/#jQuery3

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

于 2013-10-02T12:09:31.677 回答
0

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

实现模式的正确方法是:

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

其中是 IIFE(立即调用函数表达式(...)()的示例。函数表达式由结尾的 调用,如果它包含,则将函数作为 传递到匿名函数的作用域,因为这是它作为参数名称的内容。这种模式的一个好处是人们可以编写 jQuery 插件,并且可以维护自己的 jQuery 函数和变量的副本,并且可以随意调用它们,这有助于解决名称冲突。()jQueryjQuery$

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

于 2013-10-12T21:44:12.637 回答
0

$是 的别名jQuery

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

于 2013-10-02T12:04:09.067 回答
-1

查询文档:

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

因此 :

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

于 2013-10-02T12:07:27.210 回答
-1

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

简而言之: Javascript 变量命名约定允许您以“大写字母 (Lu)”、“小写字母 (Ll)”、“标题字母”类别中的“$”、“_”或任何有效的 Unicode 字符开始变量(Lt)”、“修饰字母 (Lm)”、“其他字母 (Lo)”或“字母编号 (Nl)”。

因此,您可以自己拥有变量 $ 或 _ 。许多 javascript 框架/库/事物利用这一事实来缩短它们的调用。

于 2013-10-02T12:10:16.807 回答
-1

所以在 JQuery(Javascript 库)中,美元符号是对 JQuery 函数的别名/引用。

在这种情况下,第一行相当于 $(document).ready(),它在运行之前等待 DOM 完成加载。

换句话说,你想在 DOM 完成加载后运行的函数(实际上几乎所有函数)你想把它放在里面,就像 jstree() 一样。

这是一个相关的SO问题

这是关于回调的 JQuery 文档的链接

于 2013-10-02T12:10:28.790 回答