2

jQueryadd文档中,它列出了一个add(html)将参数描述为的重载html

要添加到匹配元素集的 HTML 片段。

由于已经有一个add(element)重载,我假设这意味着您将一个 HTML 字符串传递给它,如下所示:

var set = $();
set.add("<div></div>");
document.write(set.length); // prints 0

但是,当此代码运行时,它对 jQuery 包装集没有影响。我错过了什么?

4

3 回答 3

3

您必须将返回设置为add如下set所示,

set = set.add("<div></div>");

.add返回您可以链接的整理后的 jQuery 对象,它并没有真正将其添加到原始对象中。

于 2013-02-19T22:04:09.063 回答
1

如果您在一行中定义它,它工作正常:http: //jsfiddle.net/s2zQr/3/

var set = $().add("<div></div>");
document.write(set.length);

正如@Pavel Chernov 指出的那样...... .add() 方法创建了一个新集合(这就是您的计数从未更新的原因)

于 2013-02-19T22:04:50.873 回答
1

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

var pdiv = $("p");
pdiv.add("div"); // WRONG, pdiv will not change

所以你的集合还是空的

于 2013-02-19T22:05:03.550 回答