簡體   English   中英

為什么使用jQuery的.append()函數和帶有元素名稱的jQuery對象以及作為單個參數的數組?

[英]Why does using jQuery's .append() function with a jQuery object with an element name and an array in it as the single parameter work?

我有一個問題,關於jQuery的.append函數如何在以下代碼段中工作,這些代碼段動態地將值添加到選擇框:

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

我已經知道這段代碼確實有用了,因為我在谷歌搜索過程中在網上找到類似的代碼之前就已經以這種方式使用了.append。 但是,我在網頁上找到類似的代碼( https://stackoverflow.com/a/3155663/3120918 )並沒有解釋為什么它有效。 我准備好.append函數( http://api.jquery.com/append/ )上的官方jQuery文檔頁面,但它沒有說明傳遞一個包含自閉合選項元素和array( $("<option/>", {value: key, text: value }) )作為append函數的單個參數。 我希望有人可以向我解釋這是如何以及為什么有效。

包含自閉合選項元素和數組的jQuery對象( $("<option/>", {value: key, text: value })

不,這是“創建元素”jQuery構造函數的一種特殊形式:

如果將一個字符串作為參數傳遞給$() ,jQuery將檢查該字符串以查看它是否看起來像HTML [ 如果它 ],jQuery會嘗試創建HTML所描述的新DOM元素。

[...]

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

要點 :如果傳遞了第二個參數,則第一個參數中的HTML字符串必須表示一個沒有屬性的簡單元素。 從jQuery 1.4開始,可以傳入任何事件類型,並且可以調用以下jQuery方法: valcsshtmltextdatawidthheightoffset

[...]

那么這里發生的是構造一個具有給定值和文本的新<option>元素,它包含在jQuery集合中。 然后append其傳遞給append ,它(像往常一樣)將集合中的所有元素附加到其元素 - 這里是#year <select>元素的新選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM