向每个循环内的jquery对象添加元素

向每个循环内的jquery对象添加元素,jquery,Jquery,我确信我在这里遗漏了一些东西,使用以下代码: var $divs = $(); $.each([1, 2, 3], function (i, val) { $divs.add($('<div>' + val + '</div>')); }); alert($divs.length); //output 0 { not really expected } 有人能解释一下为什么吗?正确的做法是什么 编辑 最后,正如你们所指出的,这是预期的行为。事实上,保持匹配集

我确信我在这里遗漏了一些东西,使用以下代码:

var $divs = $();
$.each([1, 2, 3], function (i, val) {
    $divs.add($('<div>' + val + '</div>'));
});
alert($divs.length); //output 0 { not really expected }
有人能解释一下为什么吗?正确的做法是什么

编辑

最后,正如你们所指出的,这是预期的行为。事实上,保持匹配集不变是正确的。这就像使用值而不是引用匹配对象集一样。

来自文档(您提供的文档):

给定一个表示一组DOM元素的jQuery对象 .add()方法从这些对象的并集构造一个新的jQuery对象 元素和传递到方法中的元素

以下内容不会保存添加的元素,因为.add() 方法创建一个新集合,并将原始集合保留在pdiv中 不变:

var pdiv=$(“p”)

pdiv.添加(“div”);//错,pdiv不会改变

从(您提供的)文档:

给定一个表示一组DOM元素的jQuery对象 .add()方法从这些对象的并集构造一个新的jQuery对象 元素和传递到方法中的元素

以下内容不会保存添加的元素,因为.add() 方法创建一个新集合,并将原始集合保留在pdiv中 不变:

var pdiv=$(“p”)

pdiv.添加(“div”);//错,pdiv不会改变

这实际上是对jQuery团队的回应——这是一位jQuery团队成员的回应:

“这不是一个bug,这是
.add
一直起作用的方式。
.add
起作用 不改变原始集合,它将返回一个新集合。如果要将结果保存到原始变量中,则必须使用 赋值-例如,
coll=coll.add(foo)

这实际上是对jQuery团队的回应——这是一位jQuery团队成员的回应:

“这不是一个bug,这是
.add
一直起作用的方式。
.add
起作用 不改变原始集合,它将返回一个新集合。如果要将结果保存到原始变量中,则必须使用 赋值-例如,
coll=coll.add(foo)

add()不会更改原始对象,而是返回一个新对象

下面是jquery文档中解释它的部分

以下内容不会保存添加的元素,因为.add() 方法创建一个新集合,并将原始集合保留在pdiv中 不变:

var pdiv=$(“p”);pdiv.添加(“div”);//错误,pdiv不会更改

add()不会更改原始对象,而是返回一个新对象

下面是jquery文档中解释它的部分

以下内容不会保存添加的元素,因为.add() 方法创建一个新集合,并将原始集合保留在pdiv中 不变:

var pdiv=$(“p”);pdiv.添加(“div”);//错误,pdiv不会更改

因为.add()方法创建了一个新集合并保留了原始集合 保持不变:

因为.add()方法创建了一个新集合并保留了原始集合 保持不变:


From

Ok,看起来像是预期的行为,在我看来真的很奇怪:“这不是一个bug,这是一种方式。add一直都是有效的。add不会改变原始集合,它会返回一个新集合。如果你想将结果保存到原始变量中,你必须使用赋值。”好了,伙计们,应该仔细阅读文档,抱歉!我很惊讶这已经结束了。投票决定重新开放。@Zenith似乎很公平,我应该读一下文档;)好的,看起来像是预期的行为,在我看来真的很奇怪:“这不是一个bug,这是一种方式。add一直都很有效。add不会改变原始集合,它会返回一个新集合。如果你想将结果保存到原始变量中,你必须使用赋值。”好的,伙计们,应该仔细阅读文档,对不起!我很惊讶这已经结束了。投票决定重新开放。@Zenith似乎很公平,我应该读一下文档;)
var $divs = $();
$.each([1, 2, 3], function (i, val) {
    $divs = $divs.add($('<div>' + val + '</div>'));
});
alert($divs.length); //output 3 { as expected }