0

我有一个关于 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 函数的单个参数。我希望有人可以向我解释这是如何以及为什么起作用的。

4

1 回答 1

2

包含自闭合选项元素和数组 ( $("<option/>", {value: key, text: value }))的 jQuery 对象

不,这是用于“创建元素”的 jQuery 构造函数的一种特殊形式:

如果一个字符串作为参数传递给$(),jQuery 会检查该字符串是否看起来像 HTML [如果是],jQuery 会尝试按照 HTML 的描述创建新的 DOM 元素。

[…]

的第二个参数jQuery()可以接受一个普通对象,该对象由可以传递给该.attr()方法的属性的超集组成。

重要提示:如果传递了第二个参数,则第一个参数中的 HTML 字符串必须表示一个没有属性的简单元素。从 jQuery 1.4 开始,可以传入任何事件类型,并且可以调用以下 jQuery 方法:valcsshtmltextdatawidthheightoffset.

[…]

所以这里发生的是构造一个<option>具有给定值和文本的新元素,它被包装在一个 jQuery 集合中。然后将其传递给append,它(像往常一样)将集合中的所有元素附加到其元素 - 在这里,新选项是您的#year <select>元素。

于 2013-12-19T22:56:02.690 回答