我有两个相同的(?)代码:
var x = document.createElement('div');
var y = document.createElement('div');
var z = $().add(x).add(y);
console.log(z);
和
var x = document.createElement('div');
var y = document.createElement('div');
var z = $();
z.add(x);
z.add(y);
console.log(z);
第一个例子告诉我:+ Object [div,div]
和其他:对象[]
为什么???
更多魔法:http://php.net/manual/en/mysqlinfo.api.choosing.php
UPD:
第一个正确答案:http://jsfiddle.net/d3x7gsLu/
现在我的问题:
如何在不创建新的jQuery对象的情况下(将元素附加到内部集合中)? 因为在实际中我有很多很多元素。
UPD2:
在这里回答:http://jsfiddle.net/d3x7gsLu/1/
感谢所有人!
答案 0 :(得分:6)
来自jQuery API:
给定一个表示一组DOM元素的jQuery对象, .add()方法从它们的联合构造一个新的jQuery对象 元素和传递给方法的元素。 .add()的参数 可以是$()接受的任何东西,包括jQuery 选择器表达式,对DOM元素的引用或HTML片段。
这意味着您的示例并不相同,为了相同,您的第二个示例应如下所示:
var x = document.createElement('div');
var y = document.createElement('div');
var z = $();
z = z.add(x);
z = z.add(y);
console.log(z);
答案 1 :(得分:0)
$.add()
会返回一个新值,但它不会修改z
的原始值。在第一个例子中,您要说:
创建一个空的jQuery对象,将变量
x
中的元素添加到其中 然后将变量y
中的元素添加到它。将此对象分配给 变量z
。
毕竟,z
的值将是一个包含两个元素的对象。
在第二个例子中,你说:
创建一个空的jQuery对象。将此对象分配给变量
z
。然后看看如果将变量x
中的元素添加到此对象会发生什么。然后看看如果将变量y
中的元素添加到此对象中会发生什么。
毕竟,z
的值仍然是原始的空对象。
为了使示例2的行为与示例1类似,您需要更新代码:
var x = document.createElement('div');
var y = document.createElement('div');
var z = $();
z=z.add(x);
z=z.add(y);
console.log(z);
正如您所看到的,z
的值正在更新。