Ответ 1
Вы можете использовать метод is()
:
if($(this).is("p")){
// ...
}
Скажем, у меня есть элемент DOM - как я могу определить, соответствует ли он селектору jQuery, например p
или .myclass
? Легко использовать селектор для соответствия дочерним элементам, но мне нужен истинный/ложный ответ на соответствие этого конкретного элемента?
Элемент может не иметь идентификатора (и я не могу назначить его случайным по причинам, кроме этого), поэтому я не могу применить свой селектор к родительскому элементу элемента и искать детей с тем же идентификатором, что и мой.
Будет ли это работать по назначению? Я не могу понять сравнение объектов Javascript.
$(selector, myElement.parentNode).each({
if (this == myElement) // Found it
});
Похоже, что будет простой способ увидеть, соответствует ли элемент DOM селектору jQuery...
Вы можете использовать метод is()
:
if($(this).is("p")){
// ...
}
Я считаю, что is() - это то, что вы ищете.
В противном случае вы можете просто попробовать выбрать элемент напрямую, если это то, что вы имеете в виду.
Итак, если это "a" с классом "myclass", просто сделайте $( "a.myclass" )
Я не могу применить свой селектор к родитель элемента и искать детей с тем же идентификатором, что и мой.
Вы все равно не можете этого сделать - атрибут id
должен быть уникальным.
// 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>
Возможно, вы просто хотите:
$(".complicated #selector p.with > div.manyParts").length
Если совпадений нет, длина возвращает 0, что является ложным, поэтому вы можете использовать его в инструкции if
, например:
if($(".doesThis #exist").length) {
// Do things
}
Вероятно, стоит хранить его в отдельной переменной и ТОГДА проверять длину; Таким образом, если вам нужно что-либо сделать с согласованными элементами, вам не нужно снова выполнять тот же селектор.
Попробуйте Element.matches()
document.addEventListener("click", event => {
if (event.target.matches(".elementsClass")) {
// It matches
} else {
// Does not match
}
});