代码之家  ›  专栏  ›  技术社区  ›  Mircea

jQuery获取CSS中指定的元素类

  •  2
  • Mircea  · 技术社区  · 16 年前

    我知道Attr得到元素的确切类。有没有办法得到CSS中定义的元素类? 例如,一个元素可能有类“title”,但在CSS中被定义为后代选择器,例如:.other list.title{} 我需要一些东西来得到准确的类值。您可以在这里看到完整的示例: http://jsfiddle.net/2TMgQ/2/

    单击时,两个元素都有类“title”,但在CSS中定义为两个不同的元素。 谢谢你

    3 回复  |  直到 16 年前
        1
  •  1
  •   Anurag    16 年前

    这将获得应用于元素的所有CSS样式。它使用jQuery的 is document.styleSheets ,并贯穿始终 cssRules 在每个样式表中,检查 selectorText 匹配元素。在伪代码中:

    given::element
    
    matchedRules = []
    
    for styleSheet in document.styleSheets
        for rule in styleSheet.cssRules
            if element.is(rule.selectorText)
                matchedRules.push(rule.selectorText)
    
    return matchedRules;
    

    function getCSSRules(element) {
        element = $(element);
    
        var styleSheets = document.styleSheets;
        var matchedRules = [], rules, rule;
    
        for(var i = 0; i < styleSheets.length; i++) {
            rules = styleSheets[i].cssRules;
    
            for(var j = 0; j < rules.length; j++) {
                rule = rules[j];
                if(element.is(rule.selectorText)) {
                   matchedRules.push(rule.selectorText);
                }
            }
        }
    
        return matchedRules;
    }
    

    这将返回应用于元素的所有规则。为了你的 first example

    [".links-list .title"]
    

    给尼克的 extended example ,返回:

    [".links-list .title", ".title", "a", "li a"]
    

    你如何定义 特异性 如何决定从这个列表中筛选出什么取决于你。

        2
  •  0
  •   gnome    16 年前

    $(".other-list > .title")
    

    看一看 http://api.jquery.com/category/selectors/