非jQuery相当于:在JavaScript中可见?

fix*_*oid 3 javascript jquery

因此,jQuery在DOM上提供了这个非常棒的伪查询':visible',遗憾的是,它与jQuery和Sizzle(或者你可能使用的任何引擎)的核心相关联.当只知道给定元素时,在普通JavaScript中是否有一个很好的等价物?

关于jQuery的提醒:可见规则:

  • 它们的CSS显示值为none.
  • 它们是type ="hidden"的表单元素.
  • 它们的宽度和高度显式设置为0.

隐藏了一个祖先元素,因此该元素不会显示在页面上.

注意:只检查给定元素的样式并不总是有效:可能隐藏父项而不是隐藏所有子项.

Rob*_*b W 7

您可以从源代码中获取相关代码:

jQuery.expr.filters.hidden = function( elem ) {
    var width = elem.offsetWidth,
        height = elem.offsetHeight;

    return ( width === 0 && height === 0 ) ||
           (!jQuery.support.reliableHiddenOffsets &&
           ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
};
Run Code Online (Sandbox Code Playgroud)
  • jQuery.css可以替换为getComputedStyle(或.currentStyleIE).
  • jQuery.support.reliableHiddenOffsets 是一个确定属性是否可靠的变量(IE8-).