下面的代碼行來自官方的dialog/#modal-form example
allFields = $([]).add(name)
可能有人請澄清一下$([])
呢?是否與$("*")
相同?
另一件困惑的事情是,我沒有看到allFields
被添加/追加到任何地方/任何對象,它只被創建和修改。我錯過了什麼嗎?
下面的代碼行來自官方的dialog/#modal-form example
allFields = $([]).add(name)
可能有人請澄清一下$([])
呢?是否與$("*")
相同?
另一件困惑的事情是,我沒有看到allFields
被添加/追加到任何地方/任何對象,它只被創建和修改。我錯過了什麼嗎?
的jQuery對象如果你看一看的doco for the jQuery()
function - 通常被視爲速記版本$()
- 你會看到它接受幾種不同類型和參數的組合。
語法你詢問:
是jQuery(elementArray)
語法,可以傳遞DOM元素的陣列,其中所述回報將是一個jQuery對象包裹的那些元素。通過傳遞一個空數組,你基本上會得到一個空的jQuery對象(就像你傳遞一個不匹配任何內容的選擇器字符串一樣,但沒有先試圖找到匹配的低效率)。
當創建allFields
具有添加到它(其中name
,email
和password
被之前只是作爲包含每一個DOM元素jQuery的對象創建的)3個DOM元素:
allFields = $([]).add(name).add(email).add(password)
據推測添加個體的優點項目,而不是僅僅做:
allFields = $("#name,#email,#password")
的是,還需要每個元素的各個對象,並會一直所創建的,所以沒必要麻煩通過查詢字符串重新選擇它們。
另一件事困惑我的是,我沒有看到
allFields
添加/追加到任何地方/任何對象,它只是創建和修改,我失去的東西嗎?
它是在代碼中的其他兩個地方簡稱:
allFields.removeClass("ui-state-error");
// and, later
allFields.val("").removeClass("ui-state-error");
這是相當標準的jQuery使用以除去一類或一組在jQuery對象的所有元素的值。不需要將它添加到其他對象。
$([])
創建一個空的jQuery對象,就像$()
一樣。 $('*')
創建了一個jQuery對象,該對象包含所有匹配CSS選擇器*
的元素,每個元素都將匹配。
換句話說,$([])
一無所獲,$('*')
得到一切。
的jQuery(elementArray)
elementArray:含組DOM元素在 jQuery對象來包裝的數組。
$([])
create zh_cn包裝在jQuery對象中的空集。
看起來你指的是以下行:
var name = $("#name"),
email = $("#email"),
password = $("#password"),
allFields = $([]).add(name).add(email).add(password)
這裏發生的事情是,他們選擇的三大要素,現在他們希望創建一個jQuery對象引用的所有三個。
這是相同的,除了它們避免了選擇器的呼叫的情況如下:
allFields = $("#name, #email, #password")
在本質上,它們創建了$([])
然後所附,姓名,電子郵件和密碼中的零元素jQuery對象所以最終目的是長度3