如何判断元素是否与选择器匹配?

假设我有一个DOM元素 – 如何判断它是否与jQuery选择器匹配,例如p.myclass ? 使用选择器来匹配元素的子元素很容易,但是我想要这个特定元素是否匹配的真/假答案?

该元素可能没有ID(并且由于其原因我无法将其分配给它),因此我无法将我的选择器应用于元素的父级,并查找与我的ID相同的子级。

这会按预期工作吗? 我无法弄清楚Javascript对象的比较。

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

似乎有一种简单的方法来查看DOM元素是否与jQuery选择器匹配…

您可以使用is()方法:

 if($(this).is("p")){ // ... } 

我相信is()方法正是你要找的。

否则,您可能只是尝试直接选择项目,如果这是您的意思。

所以如果它是一个带有“myclass”类的“a”,那就做$(“a.myclass”)

我无法将我的选择器应用于元素的父级,并查找与我的ID相同的子级。

无论如何你不能这样做 – id属性必须是唯一的。

也许你只想要:

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

如果没有匹配,则length返回0,这是假的,因此您可以在if语句中使用它,如:

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

可能值得将它存储在一个单独的变量中,然后检查长度; 这样,如果您需要对匹配的元素执行任何操作,则不必再次执行相同的选择器。

没有jQuery,使用Element.matches() :

 // lets define 2 variables pointing to ordinary 
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 )