2010-04-13 130 views
5

我遇到以下jQuery代碼,但無法理解它。以下代碼,特別是最後一行中的「$([])」部分是什麼意思?

var instrument = $("#instrument"), 
    quantity = $("#quantity"), 
    orderType = $("#orderType"), 
    price = $("#price"), 
    validityDate = $("#validityDate"), 
    allFields = $([]).add(instrument).add(quantity).add(orderType).add(price).add(validityDate) 

回答

10

看起來它定義了一個數組,然後add()將DOM元素定義到它。從手動:

給定一個jQuery代表 一組DOM元素,() 方法從那些元件和 的那些的傳遞到方法的結合構造新jQuery對象 的。新增。 .add()的參數 幾乎可以接受任何$()接受的東西,包括 jQuery選擇器表達式,DOM元素的參考 或HTML代碼片段。

[]是一個空的javascript數組。由於frunsi notes,這是不正確的用法,並且[]定義不需要創建一個空的元素集,在1.4 $()將爲你做。

7

它創建一個空的jQuery集合。這種用法是錯誤的,儘管它可能起作用。 []是多餘的。

正確的將只是$()

返回一個空集

對於jQuery 1.4,調用無參數jQuery的()方法返回一個空的jQuery集。在之前的jQuery版本中,這將返回一個包含文檔節點的集合。

http://api.jquery.com/jQuery/

2

這會創建一個空的jQuery對象 - 即具有0引用DOM節點的集合。

大多數情況下,您會發現將jQuery函數$應用於CSS選擇器,DOM中的一個或多個節點。在這種特殊情況下,使用這三個「重載」中的最後一個,從空數組構造一個空jQuery對象,然後使用add()添加新的DOM節點。

您的特定代碼示例是一個有點冗長,但是,作爲同樣可能已經這樣實現的:

var allFields = $("#instrument, #quantity, #orderType, #price, #validityDate");