2016-04-11 4 views
1

Я довольно смущен, в чем разница между элементамиWrapper1 и 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' получает каждый' DIV' с этим классом 'elementwrapper2' захватывает каждый элемент с этим классом –

+0

Эти 2 объекты не равны, так как их основной HTML отличается. https://jsfiddle.net/7w5k5vxo/2/ – DinoMyte

ответ

1

Каждый раз, когда вы звоните $(), либо создать объект (как вы делали с elementsWrapper1) или выполнить выбор (как с elementsWrapper2), он создает новый объект jQuery. Даже если два объекта jQuery относятся к одной и той же коллекции элементов DOM, они не являются тем же Javascript-объектом, поэтому === будет считать их не равными.

Если вы хотите проверить, являются ли два объекта jQuery эквивалентными, вы можете использовать метод .is().

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

См jQuery object equality

Смежные вопросы