我很困惑,elementsWrapper1和elementsWrapper2有什么区别?不应该将最后一个日志表达式评估为true吗?
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)
由于
答案 0 :(得分:1)
每次调用$()
时,要么创建一个对象(就像使用elementsWrapper1
那样)或执行选择(与elementsWrapper2
一样),它会创建一个新的jQuery对象。即使两个jQuery对象引用相同的DOM元素集合,它们也不是相同的Javascript对象,因此===
会认为它们不相等。
如果要测试两个jQuery对象是否等效,可以使用.is()
方法。
console.log(elementsWrapper1.is(elementsWrapper2));