5

(this) 前面的 $ 美元符号用于选择当前元素。我对选项前面的 $ 和 thisSelect 有点困惑。它们有什么特殊含义吗?

var $options = $(this).children('option');
var $thisSelect = $(this);

感谢您的帮助

4

6 回答 6

13

正如大家所说,这只是一个约定。
我使用$变量前面的符号来标识该变量包含一个对象。

var thisIsANumber = 1024; // No $.. Its a normal variable
var $divElement = $('div#idOfDiv'); // Yes! Its a jQuery Object
var $this = $(this); // Commonly used to reduce the work javascript has to do!

//Now I can use something like this.. (Notice how easy it is to read!)
$divElement.slideUp();

// Or a more `real world` example!
$('#element').click(function(){
    // Hold $(this) inside a variable
    // So we don't have to traverse the dom unnecessarily
    var $this = $(this); // Save it (its a object.. so prepend a `$` )
    $this.hide(); // Use it again
    $this.fadeIn(); // and again
//  ^ Has a dollar sign, because it is a jQuery Object.
});

你会看到很多插件都使用这个约定(嗯..至少写得很好)。
通过将对象存储在变量中,Javascript 不必每次都通过您的代码来获取元素。相反,我们已经有了元素(在变量内部),所以我们用它来引用它。

如果您$(this)在同一个回调函数中多次使用,则应将其存储在变量中.. ( var $this = $(this);)。否则,每次您使用它时,javascript 都必须每次都从您的源代码中获取元素(这会大大降低性能!(尤其是对于在慢/旧计算机上浏览的人!)。

于 2013-01-16T16:30:02.737 回答
8

它是对 jQuery 包装对象的常见引用。它使阅读代码更容易知道哪些变量是 jQuery 包装的。

//Item has been "cached" for later use in the script as a jQuery object.
var $item = $(this);

其他常见做法:

如果变量是私有的,则使用如下划线:

(function(){
     var _foo = "bar";
})()

如果它是公开的,我们不使用下划线:

var foo = "bar"

如果它是一个 jQuery 选择器,我们使用$

var $foo = $('bar');    
//then you can access it like this
$foo.attr('id')

这只是一个编码约定,它允许您在代码的后面快速引用变量的类型。

于 2013-01-16T16:23:42.707 回答
2

美元符号可以帮助指示您的变量何时包含 jQuery 对象而不是任何其他类型。是否要在 var 前面包含 $ 符号完全取决于编码人员,它只是作为提醒。

于 2013-01-16T16:23:27.323 回答
2

没有任何意义。这些只是普通字符,就像_π(如果你不掌握你的工具链,这个不安全)你可以放入你的变量名。

请参阅此处有关有效 javascript 名称的规范。特别是这个:

本标准规定了特定的字符添加:美元符号 ($) 和下划线 (_) 允许在 IdentifierName 的任何位置。

您可能也对此相关答案感兴趣。

通常以$包含 jQuery 集的变量作为前缀。

于 2013-01-16T16:23:30.800 回答
1

这些变量名前的 $ 符号就像变量名中的其他字符一样。它没有任何意义。您可以使用此约定来确定您在此变量中有 jQuery 对象。

于 2013-01-16T16:24:46.870 回答
1

有些人习惯于$在 var 名称前面添加约定,以知道它的值是一个 jQuery 对象。

这样我就知道以下变量有不同的结果。

var $this = $(this);
var self = this;
于 2013-01-16T16:25:31.927 回答