Gee*_*tra 9 javascript jquery css-selectors
如何使用jQuery获取给定DOM元素的所有DEFINED CSS选择器?
定义中我指的是应用于任何样式表的所有CSS选择器document.
在某种程度上,这类似于FireBug实现的功能,其中显示了所选DOM元素的所有应用CSS选择器.
任何帮助表示赞赏.
从这个答案中,您可以通过循环遍历cssRules属性来获得所需内容.
var myElement = $("#content");
for (var x = 0; x < document.styleSheets.length; x++) {
var rules = document.styleSheets[x].cssRules;
for (var i = 0; i < rules.length; i++) {
if (myElement.is(rules[i].selectorText)) {
$("ul").append("<li>" + rules[i].selectorText + "</li>");
}
}
}
Run Code Online (Sandbox Code Playgroud)
鉴于以下dom:
<div>
<div id="content">
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
和css规则:
div
{
background-color:black;
}
#content{
height:50px;
width:50px;
}
div > div
{
border: solid 1px red;
}
Run Code Online (Sandbox Code Playgroud)
我们将得到一个匹配的规则集:
body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, form,fieldset, input, textarea, p,
blockquote, th, td div
#content
div > div
Run Code Online (Sandbox Code Playgroud)
关于jsfiddle的例子.不确定这对于所有场景的效果如何,但如果它符合您的需求,可能需要考虑一下.
更新了稍微更完整的示例 ......
$(document).click(function(event) {
var rules = GetAppliedCssRules($(event.target));
var $ul = $("#rules").empty();
$.each(rules, function() {
$ul.append("<li>" + this + "</li>");
});
event.preventDefault();
});
function GetAppliedCssRules($element) {
var appliedRules = [];
for (var x = 0; x < document.styleSheets.length; x++) {
var rules = document.styleSheets[x].cssRules;
for (var i = 0; i < rules.length; i++) {
if ($element.is(rules[i].selectorText)) {
appliedRules.push(rules[i].selectorText);
}
}
}
return appliedRules;
}
Run Code Online (Sandbox Code Playgroud)