开发者问题收集

如何检查元素在 jQuery 中是否隐藏?

2008-10-07
3208492

如何使用 .hide().show().toggle() 切换元素的可见性?

如何测试元素是否为 visiblehidden

3个回答

由于问题涉及单个元素,因此此代码可能更合适:

// Checks CSS content for display:[none|block], ignores visibility:[true|false]
$(element).is(":visible");

// The same works with hidden
$(element).is(":hidden");

它与 twernt 的建议 相同,但应用于单个元素;并且它 与 jQuery FAQ 中推荐的算法相匹配

我们使用 jQuery 的 is() 来检查所选元素是否与另一个元素、选择器或任何 jQuery 对象匹配。此方法遍历 DOM 元素以查找满足传递参数的匹配项。如果匹配,它将返回 true,否则返回 false。

Tsvetomir Tsonev
2008-10-07

您可以使用 hidden 选择器:

// Matches all elements that are hidden
$('element:hidden')

以及 visible 选择器:

// Matches all elements that are visible
$('element:visible')
twernt
2008-10-07
if ( $(element).css('display') == 'none' || $(element).css("visibility") == "hidden"){
    // 'element' is hidden
}

上述方法不考虑父级的可见性。如果要同时考虑父级,应使用 .is(":hidden").is(":visible")

例如,

<div id="div1" style="display:none">
  <div id="div2" style="display:block">Div2</div>
</div>

The above method will consider div2 visible while :visible not. But the above might be useful in many cases, especially when you need to find if there is any error divs visible in the hidden parent because in such conditions :visible will not work.

Mote
2008-10-07