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

128
задан DarkAjax 4 December 2012 в 20:27
поделиться

4 ответа

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

Предполагая:

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

this:

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

возвращает истину.

144
ответ дан 24 November 2019 в 00:34
поделиться

Случайный пример 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));
2
ответ дан 24 November 2019 в 00:34
поделиться

Каждый раз, когда вы вызываете функцию jQuery (), создается и возвращается новый объект. Таким образом, даже проверка равенства для одних и тех же селекторов не удастся.

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

$('#a') == $('#a') // false

Результирующий объект jQuery содержит массив совпадающих элементов, которые в основном являются собственными объектами DOM, такими как HTMLDivElement , которые всегда ссылаются на один и тот же объект, поэтому вы должны проверить их на равенство, используя индекс массива, как предложил Дарин. .

$('#a')[0] == $('#a')[0] // true
13
ответ дан 24 November 2019 в 00:34
поделиться

Результаты сбора, которые вы получаете из коллекции jQuery, не поддерживают сравнение на основе наборов. Вы можете использовать для сравнения отдельных членов один за другим, хотя я не знаю утилит для этого в jQuery.

-1
ответ дан 24 November 2019 в 00:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: