2013-01-16 102 views
3

(this)前面的$美元符號用於選擇當前元素。我對選項和本選項前面的$有點困惑。他們有特殊的意義嗎?

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

感謝您的幫助

+0

這只是一個約定。 – Pointy

+0

它是名字的一部分 – SLaks

+2

'($ this $前面的$美元符號用於選擇當前元素'...錯誤''$()'是一個普通的函數調用 – SLaks

回答

8

大家都說,它只是一個約定。
我使用變量前面的$符號來標識此變量包含一個對象。

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都必須從源代碼中每次獲取元素(這可能會大大降低性能!(特別是對於在慢速/舊計算機上瀏覽的人!)。

2

美元符號可用於指示當您的變量包含,而不是任何其他類型的jQuery對象。它完全取決於編碼器,如果他們想要在$ var前面加上$符號,它只是提醒。

2

沒有意義。這些只是普通字符,就像_π(這個不安全,如果你不掌握你的工具鏈),你可以放入你的變量名。

請參閱here the specification regarding valid javascript name。尤其是這樣的:

本標準規定了特定的字符補充:美元符號 ($)和下劃線(_)被允許在任何地方以 IdentifierName。

您可能也有興趣this related answer

前綴爲$的變量通常包含jQuery集合。

5

這是一個常用的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') 

這只是一種編碼規範,它可以讓您快速參考變量是什麼類型在後面的代碼。

+1

做出了很大的反應n謝謝 – Richard77

1

$這些變量名前的符號就像變量名中的其他字符一樣。它沒有任何意義。你可以使用這個約定來確定你在這個變量中有jQuery對象。

1

有些人過去習慣於在var名前添加$以便知道它的值是一個jQuery對象。

這樣我就知道下面的變量有不同的結果。

var $this = $(this); 
var self = this;