javascript - 非 jQuery 相当于 :visible in JavaScript?

标签 javascript jquery

所以 jQuery 提供了这个很棒的伪类来在 DOM 中查询“:visible”,不幸的是,它与 jQuery 和 Sizzle(或您可能使用的任何引擎)的核心紧密相关。当只知道给定元素时,在普通 JavaScript 中是否有一个很好的等价物?

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

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

祖先元素是隐藏的,因此该元素不会显示在页面上。

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

最佳答案

您可以从source code获取相关代码:

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");
};
  • jQuery.css 可以替换成getComputedStyle (或 IE 的 .currentStyle)。
  • jQuery.support.reliableHiddenOffsets 是一个变量,用于确定属性是否可靠 (IE8-)。

关于javascript - 非 jQuery 相当于 :visible in JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9637943/

相关文章:

javascript - jQuery 与 document.querySelectorAll

javascript - 在整个 html 页面上等待光标

jQuery:加载脚本,但作为 <pre><code> block ?

javascript - 数据表排序时间列

Javascript - 斜杠被空格替换

javascript - 根据行号划分 html div,即。每个 div 10 行具有固定高度并执行分页以使用 jquery 读取 div 的下 10 行

javascript - 选择字段时的模态表单清除

javascript - 如何从我的 EJS 模板中获取属性列表?

javascript - Ext.getCmp ('panel' ) 给出 this.el 为空或不是对象

javascript - Jquery/Javascript