jQuery的$在这个函数中意味着什么?

时间:2013-11-07 13:36:29

标签: javascript jquery

$有什么区别?

问题:

下一个示例中$的含义是什么?

JS:

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

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

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

提前谢谢

2 个答案:

答案 0 :(得分:2)

这只是一个论点的名称。

请参阅documentation for ready

  

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

答案 1 :(得分:2)

$通常是jQuery构造函数的名称。也就是说,它是每次要创建jQuery对象时调用的函数的名称。例如:

$('div')

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

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

但是,可能$设置为其他内容。也许您希望使用$来表示代码中的不同内容。或者也许您也在使用Prototype,它也使用$符号指向函数。

这就是jQuery.noConflict()方法存在的原因:它会$停止jQuery

但是,许多作者更喜欢使用$来引用jQuery构造函数,因为它更简洁,更易读。 jQuery提供了一个有用的功能,使他们可以轻松地执行此操作。

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

例如:

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命名空间”一节。