假设我有一个DOM元素 - 如何判断它是否与jQuery选择器匹配,例如p
或.myclass
?使用选择器来匹配元素的子元素很容易,但我想要一个关于这个特定元素是否匹配的真/假答案?
该元素可能没有ID(我不能将其分配给一个随机的,除此之外的原因),所以我不能将我的选择器应用于元素的父元素,并寻找与我的ID相同的子元素。
这会按预期工作吗?我无法弄清楚Javascript对象的比较。
$(selector, myElement.parentNode).each({
if (this == myElement) // Found it
});
似乎有一种简单的方法可以看出DOM元素是否与jQuery选择器相匹配......
答案 0 :(得分:32)
您可以使用is()
方法:
if($(this).is("p")){
// ...
}
答案 1 :(得分:3)
答案 2 :(得分:1)
我无法将我的选择器应用于 元素的父母和寻找孩子 与我的ID相同。
无论如何你不能这样做 - id
属性必须是唯一的。
答案 3 :(得分:0)
也许你只想要:
$(".complicated #selector p.with > div.manyParts").length
如果没有匹配项,则length返回0,这是假的,因此您可以在if
语句中使用它,例如:
if($(".doesThis #exist").length) {
// Do things
}
可能值得将它存储在一个单独的变量中,然后检查长度;这样,如果您需要对匹配的元素执行任何操作,则不必再次执行相同的选择器。
答案 4 :(得分:0)
// 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>
答案 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()