2013-12-19 53 views
0

我有一個關於jQuery的.append功能在下面的代碼段動態地將值來選擇框是如何工作的問題:爲什麼使用jQuery的.append()函數與元素名稱jQuery對象,並在其中一個陣列作爲單個參數的工作?

for (var i=currentYear; i >= minYear; i--){ 
    $('#year').append($("<option/>", { value: i, text: i})); 
} 

我已經知道這個代碼的工作,因爲我已經使用。在谷歌搜索期間在線查找類似的代碼之前,以這種方式追加。然而,網頁我發現(https://stackoverflow.com/a/3155663/3120918)類似的代碼沒有解釋爲什麼它的工作原理。我準備好,在.append功能(http://api.jquery.com/append/)官方jQuery的文檔頁面,但它沒有說傳遞含有一個自我封閉的選擇元素和陣列($("<option/>", {value: key, text: value }))作爲單一的參數來追加一個jQuery對象什麼功能。我希望有人能向我解釋這是如何以及爲什麼這樣做的。

+0

我沒有看到任何數組中的示例代碼 –

+1

[這裏是jQuery的文檔的相關章節。(http://api.jquery.com/jQuery/#jQuery-html-attributes)也是不一個數組,它只是一個對象。數組有方括號。 – Pointy

回答

2
含有一個自閉可選元件和陣列( $("<option/>", {value: key, text: value })

jQuery對象,即jQuery constructor for "creating elements"的一種特殊形式:

如果字符串傳遞作爲參數傳遞給$(),jQuery的檢查字符串是否它看起來像HTML [如果確實如此],jQuery的嘗試由HTML描述來創建新的DOM元素。

[...]

的第二個參數jQuery()可以接受由可傳遞到.attr()方法的屬性的超集的一個普通的對象。

重要:如果傳遞第二個參數,第一個參數中的HTML字符串必須表示一個沒有屬性的簡單元素。對於jQuery 1.4,任何事件類型可以傳遞的,並且下面的jQuery方法可以被稱爲:valcsshtmltextdatawidthheight,或offset

[...]

那麼,這裏確實發生了與給定值和文本,它被包裹在一個jQuery集合新<option>元件的結構。這隨後被傳遞到append,它(像往常一樣)追加從收集到的元素的所有元素 - 在這裏,新的選項,你#year<select>元素。

相關問題