как сравнить два элемента в jQuery [дубликат]



этот вопрос уже есть ответ здесь:




  • Как я могу проверить, являются ли два элемента DOM, обернутые jQuery, одинаковыми? [дубликат]

    3 ответы



var a=$('#start > div:last-child');
var b=$('#start > div.live')[0];
alert(a==b)
alert(a==$(b))


это всегда ложь. Как вы можете сравнить два элемента в jQuery?



спасибо

656   6  

6 ответов:

вы можете сравнить элементы DOM. Помните, что jQuery селекторы возвращают массивы, которые никогда не будут равны в смысле равенства ссылок.

предположим:

<div id="a" class="a"></div>

это:

$('div.a')[0] == $('div#a')[0]

возвращает true.

для записи, jQuery имеет is()

каждый раз при вызове функции 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 пример тестирования "set equality" в 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.

Comments

    Ничего не найдено.