Как я могу определить, соответствует ли элемент селектору? - PullRequest
14 голосов
/ 27 февраля 2009

Допустим, у меня есть элемент DOM - как я могу определить, соответствует ли он селектору jQuery, например p или .myclass? Легко использовать селектор для сопоставления дочерних элементов, но я хочу получить ответ «истина / ложь» на соответствие этого конкретного элемента?

Элемент может не иметь идентификатора (и я не могу назначить его случайным образом по причинам, выходящим за рамки этого), поэтому я не могу применить свой селектор к родительскому элементу элемента и искать детей с таким же идентификатором, как у меня.

Будет ли это работать как задумано? Я не могу понять сравнение объектов Javascript.

$(selector, myElement.parentNode).each({
  if (this == myElement) // Found it
});

Похоже, будет простой способ узнать, соответствует ли элемент DOM селектору jQuery ...

Ответы [ 5 ]

32 голосов
/ 27 февраля 2009

Вы можете использовать метод is():

if($(this).is("p")){
 // ...
}
2 голосов
/ 27 февраля 2009

Я считаю, что метод is () - это то, что вы ищете.

В противном случае, вы можете просто попробовать выбрать элемент напрямую, если вы это имеете в виду.

Так что, если это "a" с классом "myclass", просто сделайте $ ("a.myclass")

1 голос
/ 09 июля 2017

Без jQuery, используя Element.matches () :

// lets define 2 variables pointing to ordinary <div> elements
var elm1 = document.querySelector('div');
var elm2 = elm1.nextElementSibling;

console.log(
   elm1.matches('.foo'),         // true
   elm1.matches('.bar'),         // false
   elm2.matches('[title=bar]'),  // true
)
<div class='foo'></div>
<div title='bar'></div>

См. Список поддерживаемых браузеров

1 голос
/ 27 февраля 2009

Я не могу применить свой селектор к родитель элемента и искать детей с таким же идентификатором, как у меня.

Вы все равно не можете этого сделать - атрибут id должен быть уникальным.

0 голосов
/ 06 мая 2013

Может быть, вы просто хотите:

$(".complicated #selector p.with > div.manyParts").length

Если совпадений нет, length возвращает 0, что неверно, поэтому вы можете использовать его в выражении if, например:

if($(".doesThis #exist").length) {
    // Do things
}

Вероятно, стоило бы сохранить его в отдельной переменной и ТОГДА проверять длину; таким образом, если вам нужно что-то сделать с соответствующими элементами, вам не нужно снова запускать тот же селектор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...