2016-04-11 130 views
1

我很困惑,elementsWrapper1和elementsWrapper2有什么区别?不应该最后的日志表达式评估为真?jQuery引用创建元素

HTML:

<div class="container"> 
    <div class="element"></div> 
    <div class="element"></div> 
    <div class="element"></div> 
</div> 

JS(jQuery的):

var container = $('.container'); 

var elementsWrapper1 = $('<div>', { 
    class : 'elements-wrapper' 
}); 

container.children().wrapAll(elementsWrapper1); 

var elementsWrapper2 = $('.elements-wrapper'); 

console.log(elementsWrapper1); 
console.log(elementsWrapper2); 

//Returns False, but why? 
console.log(elementsWrapper1 === elementsWrapper2) 

感谢

+1

'elementwrapper1'得到与该类'elementwrapper2'抓起每一个元素与该类 –

+0

的2个对象是不相等的,因为它们的基础HTML是不同每'DIV'。 https://jsfiddle.net/7w5k5vxo/2/ – DinoMyte

回答

1

每次调用$(),无论是创建一个对象(如您elementsWrapper1没有)时间或执行一个选择(与elementsWrapper2一样),它创建一个新的jQuery对象。即使两个jQuery对象引用DOM元素的相同集合,它们也不是相同的Javascript对象,因此===会认为它们不相同。

如果要测试两个jQuery对象是否等效,可以使用.is()方法。

console.log(elementsWrapper1.is(elementsWrapper2)); 

参见jQuery object equality