1

有什么区别$

问题:

$下一个例子是什么意思?

JS:

jQuery(document).ready(function() {
    console.log('loaded');
});

jQuery(document).ready(function($) {
    console.log('loaded');
});

有人可以向我解释这两个功能有什么区别吗?

先感谢您

4

2 回答 2

2

$通常是 jQuery 构造函数的名称。也就是说,它是你每次想要制作一个jQuery对象时调用的一个函数的名称。例如:

$('div')

它通常是一个全局变量,这意味着它在整个页面的 Javascript 中都可用。还有另一个变量jQuery,它通常指向完全相同的东西。

console.log($ === jQuery); // true

但是,可以设置$为其他内容。也许你想$在你的代码中使用不同的意思。或者您可能也在使用 Prototype,它也使用$符号来指向一个函数。

这就是该jQuery.noConflict()方法存在的原因:它不再$引用jQuery.

然而,许多作者更喜欢使用$jQuery 构造函数来引用它,因为它更加简洁易读。jQuery 提供了一个有用的功能,让他们可以轻松地做到这一点。

当你这样做时jQuery(document).ready(function(),你正在分配一个事件处理程序。该函数将在事件触发时运行。我们可以做的是重新分配以仅在该回调函数的范围内$引用 jQuery 。这由 jQuery 提供帮助:每个回调函数都以构造函数作为第一个参数调用,因此您可以使用您在函数中选择的任何名称。$(document).readyjQuery

例如:

var $ = 'apples';

jQuery(document).ready(function() {
    $('div'); // causes an error: "TypeError: string is not a function"
});

jQuery(document).ready(function($) {
    $('div'); // works fine
});

此功能记录在该ready方法的 jQuery API 中,在标题为“为 jQuery 命名空间起别名”的部分中。

于 2013-11-07T13:45:23.250 回答
2

它只是一个参数的名称。

请参阅准备好的文档

传递给 .ready() 方法的处理程序可以接受一个参数,该参数传递给全局 jQuery 对象

于 2013-11-07T13:38:17.373 回答