[英]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.