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

如何判断是否显示DOM元素?

  •  8
  • EoghanM  · 技术社区  · 17 年前

    这是不可混淆的 "How to tell if a DOM element is visible?"

    display:none;

    (这与元素是否在视口中无关)

    我可以遍历元素的每个父元素,检查 display

    6 回复  |  直到 9 年前
        1
  •  14
  •   user42092 user42092    17 年前

    从Firefox中的一个快速测试来看,当一个元素被父元素隐藏时,大小和位置属性(clientWidth、offsetTop等)似乎都返回0 display:none .

        2
  •  1
  •   Diodeus - James MacFarlane    17 年前

    使用 Prototype :

    if($('someDiv').visible) {...}
    
        3
  •  0
  •   EoghanM    17 年前

    就像我用的 MochiKit ,根据Ant P的回答,我得出的结论是:

    getElementPosition('mydiv').y != 0
    

    我还可以通过以下方式检查它是否在视口中(垂直):

    y = getElementPosition('mydiv').y
    (y < getViewportPosition().y + getViewportDimensions().h &&
        getViewportPosition().y < y)
    

    顺便说一句,这也适用于IE6。

        4
  •  0
  •   dave dave    17 年前

    依赖于位置为0是脆弱的。最好编写一个helper函数来遍历父对象,直接检查它们的显示样式。

        5
  •  0
  •   Guy Bedford    15 年前

    这是迭代解-

    var elementShown = function(e){
        if (e == document) 
          return true;
    
        if ($(e).css('display') == 'none') //or whatever your css function is
          return false;
    
        return elementShown(e.parentNode);
    }
    
        6
  •  0
  •   Paul Roub jim    8 年前

    .getClientRects() display="none" 来自父/祖先元素)