var a=$('#start > div:last-child');
var b=$('#start > div.live')[0];
alert(a==b)
alert(a==$(b))
Это всегда неверно. Как вы можете сравнить два элемента в jQuery?
спасибо
var a=$('#start > div:last-child');
var b=$('#start > div.live')[0];
alert(a==b)
alert(a==$(b))
Это всегда неверно. Как вы можете сравнить два элемента в jQuery?
спасибо
Вы можете сравнить элементы DOM. Помните, что селектора jQuery возвращают массивы, которые никогда не будут равны в смысле ссылочного равенства.
Предполагая, что:
<div id="a" class="a"></div>
$('div.a')[0] == $('div#a')[0]
возвращает true.
Для записи jQuery имеет is()
функцию:
a.is(b)
Обратите внимание, что a
уже является экземпляром jQuery.
Каждый раз, когда вы вызываете функцию jQuery(), создается и возвращается новый объект. Поэтому даже проверки равенства на тех же селекторах не будут выполнены.
<div id="a">test</div>
$('#a') == $('#a') // false
Результирующий объект jQuery содержит массив совпадающих элементов, которые в основном являются собственными объектами DOM, такими как HTMLDivElement
, которые всегда относятся к одному и тому же объекту, поэтому вы должны проверить их для равенства, используя индекс массива, как предложил Дарин.
$('#a')[0] == $('#a')[0] // true
a.is(b)
и проверить, не равны ли они
!a.is(b)
как для
$b = $('#a')
....
$('#a')[0] == $b[0] // not always true
возможно, класс добавлен в элемент или удален из него после первого присваивания
Случайный пример AirCoded тестирования "установить равенство" в jQuery:
$.fn.isEqual = function($otherSet) {
if (this === $otherSet) return true;
if (this.length != $otherSet.length) return false;
var ret = true;
this.each(function(idx) {
if (this !== $otherSet[idx]) {
ret = false; return false;
}
});
return ret;
};
var a=$('#start > div:last-child');
var b=$('#start > div.live')[0];
console.log($(b).isEqual(a));
Результаты коллекции, полученные вами из коллекции jQuery, не поддерживают сравнение на основе набора. Вы можете использовать сравнение отдельных членов один за другим, хотя для этого нет никаких утилит, о которых я знаю в jQuery.