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 !');
});
});
Я не знаю почему, но я не получаю предупреждающее сообщение "НАЙДЕНО!".
Ответы
Ответ 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]