向每个循环内的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()方法创建了一个新集合并保留了原始集合
保持不变:
FromOk,看起来像是预期的行为,在我看来真的很奇怪:“这不是一个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 }