有没有办法检查一个 CSS 选择器(获得document.styleSheets[666].rules[1984].selectorText
)是否匹配一个特定的元素?
我要求一个跨浏览器的纯 javascript 解决方案,但如果只是在其中完成,我会考虑使用 jQuery。
有没有办法检查一个 CSS 选择器(获得document.styleSheets[666].rules[1984].selectorText
)是否匹配一个特定的元素?
我要求一个跨浏览器的纯 javascript 解决方案,但如果只是在其中完成,我会考虑使用 jQuery。
对于现代浏览器,有matchesSelector
. 对于不太现代的浏览器,您可以使用querySelectorAll
和遍历 DOM。
不要使用 jQuery。嘶嘶声就足够了。
Sizzle.matchesSelector(element, selector)
搜索特定的 CSS 规则
下面的示例在样式表中搜索“a:hover”规则,如果找到,则返回对它的引用:
var mysheet=document.styleSheets[0]
var myrules=mysheet.cssRules? mysheet.cssRules: mysheet.rules
for (i=0; i<myrules.length; i++){
if(myrules[i].selectorText.toLowerCase()=="a:hover"){ //find "a:hover" rule
targetrule=myrules[i]
break;
}
}
参考:http ://www.javascriptkit.com/dhtmltutors/externalcss3.shtml
在 jQuery 中非常简单:
$(element).is(cssSelector);