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

Сравните 'e.target' с объектом jQuery

Что я хочу сделать:

( clickedObject === someDiv ) //returns true or false

Что я пробовал

( $(e.target) === $('.selector') ); //returns a false negative.

Мое обходное решение

( $(e.target).attr('class') === $('.selector').attr('class') ); //works as intended, not so clean though.

Каков правильный способ сравнения объекта, который я нажал на объект в DOM?

4b9b3361

Ответ 1

Чтобы проверить, есть ли e.target этот класс, вы можете использовать функцию hasClass.

if ($(e.target).hasClass("selector"))

Или, если вы действительно хотите сравнить объекты, обратите внимание, что селекторы jQuery возвращают коллекцию элементов, поэтому я думаю, что вы захотите

if (e.target === $('.selector')[0])

Ответ 2

Ты близко. Вместо этого используйте .is():

if($(e.target).is('.selector')) {
    // Your code
}

Трюк заключается в том, что вы переносите e.target в объект jQuery, чтобы разрешить ему доступ ко всем полезным методам jQuery.

Если вы видите, имеет ли e.target определенный класс, попробуйте использовать .hasClass() вместо .is():

if($(e.target).hasClass('selector')) {
    // Your code
}

Любой из методов работает, хотя .hasClass() немного понятнее, что делает код, и работает быстрее, чем с помощью .is()

Ответ 3

Если вы хотите сопоставить элемент, к которому привязано событие, вы можете использовать $(this), или если вы хотите найти, какой элемент вызвал событие, используйте $(event.target).

Ниже приведен пример обоих из них.

http://jsfiddle.net/Phunky/TbJef/

Если вы не используете делегирование событий, они будут одинаковыми, и если есть один и тот же элемент.

Ответ 4

Очевидно, что здесь лучше всего использовать функцию .is().

Если вы обнаружите, что делаете такое сравнение, попробуйте проверить, можно ли использовать встроенные механизмы jQuery следующим образом:

$(element).on("click", ".selector", function() {
    alert("clicked");
});

Второй аргумент в методе .on() является целевым селектором. При использовании этой конструкции (подробнее: http://api.jquery.com/on/#direct-and-delegated-events), не нужно делать никаких дополнительных сравнений.

https://jsfiddle.net/m5zysufy/