2010-08-01 53 views
22

我是JQuery的初學者。

何時應該使用$之後的點?

$.trim(str)而不是$trim(str)

還有一些沒有點的情況:$(document).ready,但不是$.(document).ready

謝謝。

+4

簡而言之:美元符號通常會立即跟隨圓括號或點和方法名稱。當然,您應該嘗試學習JavaScript語言,以便了解所有的圓點和圓括號的真正含義:) – Martin 2010-08-01 22:18:03

回答

18

我不相信你有選擇,只有一種語法是正確的,並且會實際工作。該$符號只不過是一個速記符號多爲jQuery功能,所以當你寫:

$('some selector') 

要調用一個函數,稱爲jQuery,並傳遞一個字符串,或在你的情況,你傳入document對象。

當涉及到調用一個方法時,如修剪等輔助方法,您將需要使用以下語法,即jQuery.trim()$.trim()。這很容易檢查自己,就嘗試了這一點:

typeof($.trim) //returns "function" 
typeof($trim) //returns "undefined" 
+4

...和['typeof'](https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Special_Operators/typeof_Operator)運算符不需要括號,也不需要點。 ;-) – 2010-08-01 23:29:16

3

當您正在訪問的jQuery的靜態方法不可用在比如說,一個DOM元素的原型。 trim是API公開的靜態方法。

沒有$.fn.trim,我們不能可靠地依靠String.prototype.trim,因爲方法可能不同。

關於$trim沒有定義。 trim是jQuery的$的一種方法。你可以做$['trim']$.trim,這應該是訪問它的唯一方法。

19

在jQuery中,$是一個變量名,如foobar,它引用全局jQuery對象。如果你想訪問jQuery對象的屬性,那麼你使用點。這些都是基本相同:

$.property 
jQuery.property 

(由於$就像任何其他的變量,它可以讓你將它設置爲你喜歡的任何東西,如果你是包括包括後Prototype庫可能發生這種情況。 jQuery庫,它會讓您的$指向document.getElementById函數的別名。)

jQuery對象恰好也是一個功能,這樣你就可以調用該函數一樣的,你會調用任何其它功能:

$(arguments) 
alert("arguments!") 

在另一方面,$trim只是另一個全局變量,像$location,這可能是一個功能你自己定義:

var $trim = function(arguments) { 
    return "foo"; 
}; 

$trim(str) 
+1

+1最好的答案 – CodyBugstein 2014-07-16 14:13:46

2

$.foo語法意味着$被視爲與一個對象字段foo,這通常是您要調用的函數。所以這與一個名爲foo的獨立函數沒什麼區別 - 它只是以$.爲前綴,以區別於其他函數並將其與jQuery庫相關聯。

當你使用$(something).foo時,你將something傳遞給jQuery函數,並且結果取決於你傳遞的是什麼(可能是一個選擇器來查找一個現有的對象,或者它可能是一小段HTML構建一個新的對象,或者它可能是一個被註冊爲在頁面加載時運行的函數)。無論如何,例如,如果您傳遞的選擇器標識了一個類,則可以在返回的對象上調用foo,該對象可能會應用於多個DOM對象。

當jQuery函數對除DOM對象(HTML頁面的一部分)以外的東西進行操作時,將使用第一種語法。例如,一個字符串($.trim)或一個數組($.each)。這些不是頁面的元素,它們只是JavaScript中的純數據。

在DOM元素上操作時使用第二種語法 - 您使用$(something)來創建jQuery對象,該對象是圍繞零個或多個DOM元素的包裝器。然後你在返回的包裝器上調用函數來方便地操作它所包裝的對象。

相關問題