jQuery add()方法的奇怪行为

时间:2015-08-03 23:53:06

标签: javascript jquery

我有两个相同的(?)代码:

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]

和其他:对象[]

为什么???

小提琴:https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet#Defense_Option_1:_Prepared_Statements_.28Parameterized_Queries.29

更多魔法:http://php.net/manual/en/mysqlinfo.api.choosing.php

UPD:

第一个正确答案:http://jsfiddle.net/d3x7gsLu/

现在我的问题:

如何在不创建新的jQuery对象的情况下(将元素附加到内部集合中)? 因为在实际中我有很多很多元素。

UPD2:

在这里回答:http://jsfiddle.net/d3x7gsLu/1/

感谢所有人!

2 个答案:

答案 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的值正在更新。