是否有可能切换元素的可见性,使用功能.hide()
,.show()
或.toggle()
?
您将如何测试元素是否为visible
或hidden
?
是否有可能切换元素的可见性,使用功能.hide()
,.show()
或.toggle()
?
您将如何测试元素是否为visible
或hidden
?
由于问题涉及单个元素,因此此代码可能更合适:
// 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元素遍历,找到一个满足传入参数的匹配项。如果匹配则返回真,否则返回假。
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>
上面的方法会考虑
div2
可见而:visible
不是。但是以上内容在许多情况下可能很有用,尤其是当您需要查找隐藏父级中是否有任何可见的错误 div 时,因为在这种情况下:visible
将不起作用。
这些答案都没有解决我所理解的问题,即我一直在寻找的问题,“我如何处理具有 的物品visibility: hidden
?” . 既:visible
不会也:hidden
不会处理这个,因为他们都在根据文档寻找显示。据我所知,没有选择器来处理 CSS 可见性。这是我解决它的方法(标准 jQuery 选择器,可能有更简洁的语法):
$(".item").each(function() {
if ($(this).css("visibility") == "hidden") {
// handle non visible state
} else {
// handle visible state
}
});
您可以使用:visible
和:hidden
选择器确定元素是否折叠。
var isVisible = $('#myDiv').is(':visible');
var isHidden = $('#myDiv').is(':hidden');
如果您只是根据元素的可见性对其进行操作,则可以只在选择器表达式中包含:visible
或:hidden
。例如:
$('#myDiv:visible').animate({left: '+=200px'}, 'slow');