如何判断元素是否与选择器匹配?
假设我有一个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 )