簡體   English   中英

jQuery add()方法的奇怪行為

[英]Strange behaviour of jQuery add() method

我有兩個相同的(?)代碼片段:

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//jsfiddle.net/d3x7gsLu/

更神奇: http//jsfiddle.net/d3x7gsLu/1/

UPD:

第一個正確答案: https//stackoverflow.com/a/31798686/3558278

現在我的問題:

如何在沒有創建新的jQuery對象的情況下(將元素附加到內部集合中)? 因為在實際中我有很多很多元素。

UPD2:

在這里回答: 聚合jQuery對象?

謝謝大家!

來自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);

$.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的值正在更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM