Подтвердить что ты не робот

JQuery сравнить два объекта DOM?

Нажав на элемент:

$('.my_list').click(function(){
   var selected_object = $(this);

   $('.my_list').each(function(){
      var current_object = $(this);

      if( selected_object == current_object ) alert('FOUND IT !');
   });
});

Я не знаю почему, но я не получаю предупреждающее сообщение "НАЙДЕНО!".

4b9b3361

Ответ 1

Вы можете использовать функцию jQuery.is:

Проверить текущий согласованный набор элементов на селектор, элемент, или объект jQuery и возвращает true, если хотя бы один из этих элементов соответствует заданным аргументам.

if (selected_object.is(current_object)) {
   ...    
}

Альтернативным решением является использование функции jQuery.get для получения необработанных элементов и сравнения их с помощью оператора == или ===:

if (selected_object.get(0) == current_object.get(0)) {
   ...
}

jsFiddle demo

Ответ 2

Там хороший ответ... но важно понять, почему вы напрямую не можете сравнивать селекторов в jQuery.

Селекторы jQuery возвращают структуры данных, которые никогда не будут равны в смысле ссылочного равенства. Таким образом, единственный способ понять это - получить ссылку DOM из объекта jQuery и сравнить элементы DOM.

Простейшим сравнением ссылки DOM для приведенного выше примера будет:

selected_object.[0] == current_object.[0]