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

jquery直接在元素上检索CSS样式集

  •  4
  • erikkallen  · 技术社区  · 15 年前

    如何使用jquery来确定元素是否具有内联的特定样式集。

    例如,给出了文件

    <style>
    .MyClass { position: relative }
    </style>
    ...
    <div class="MyClass" id="div1" style="position: absolute"/>
    <div class="MyClass" id="div2"/>
    ...
    <script>
    function f() {
        assert($('#div1').SOMETHING('position') == 'absolute');
        assert($('#div2').SOMETHING('position') == '');
    }
    </script>
    

    如果我使用.css(“position”),则div2被报告为“relative”。如何确定哪些样式实际上是以内联方式设置的?

    4 回复  |  直到 15 年前
        1
  •  3
  •   Mutation Person    15 年前

    您可以创建自己的自定义选择器:

    $(document).ready(function(){
        $.extend($.expr[':'], {
            positionAbsolute: positionAbsolute,
        });
    });
    
    function positionAbsolute(el) {
        return $(el).css("position").indexOf("absolute") >= 0;
    }
    

    然后像这样访问这个

    if ($("#MyDiv").is(":positionAbsolute")){
        alert("Position absolute");
    }
    

    样式必须是内联的吗?如果在CSS类中声明它,例如,

    .positionAbsolute{position: absolute}
    

    然后您可以使用类selctor代替:

    if ($("#MyDiv").is(".positionAbsolute")){
        alert("Position absolute");
    }
    
        2
  •  2
  •   erikkallen    15 年前

    我最后做了

    assert($('#div2').get(0).style.position == 'relative');
    

    但我希望有一种更jqueryish的方式来做这件事。

        3
  •  1
  •   Traveling Tech Guy    15 年前

    怎么样 .attr('style') ?
    这里是 a link 到jquery文档。

        4
  •  -1
  •   James Brooks    15 年前

    好吧,您可以只使用.css方法,它返回附加到该元素的所有样式。