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

时间:2009-02-27 19:05:31

标签: javascript jquery dom

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

该元素可能没有ID(我不能将其分配给一个随机的,除此之外的原因),所以我不能将我的选择器应用于元素的父元素,并寻找与我的ID相同的子元素。

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

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

似乎有一种简单的方法可以看出DOM元素是否与jQuery选择器相匹配......

6 个答案:

答案 0 :(得分:32)

您可以使用is()方法:

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

答案 1 :(得分:3)

我相信你正在寻找is()方法。

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

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

答案 2 :(得分:1)

  

我无法将我的选择器应用于   元素的父母和寻找孩子   与我的ID相同。

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

答案 3 :(得分:0)

也许你只想要:

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

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

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

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

答案 4 :(得分:0)

没有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>

See supported browsers list

答案 5 :(得分:0)

尝试CREATE TABLE t (i int not null) partition by range(i); CREATE TABLE t1 PARTITION OF t FOR VALUES FROM (1) TO (1000); CREATE TABLE t2 PARTITION OF t FOR VALUES FROM (1000) TO (2000); CREATE INDEX t_i ON t(i) WITH (fillfactor=100); -- This works ALTER INDEX t1_i_idx RESET (fillfactor); -- ERROR: "t_i" is not a table, view, materialized view, or index ALTER INDEX t_i RESET (fillfactor);

Element.matches()

Element.matches()
相关问题