如何使用 . hide () 、.show () 或.toggle () 来切换元素的可见度 ?

如果元素可见或隐藏, 我如何测试 ?


当前回答

这些答案都没有涉及我所理解的问题, 也就是我正在寻找的问题, “我如何处理有可见度的项目:隐藏的?” 。 无论是: 可见的还是: 隐藏的, 都无法处理, 因为两者都在寻找文档中的显示。 据我所知, 没有选择器可以处理 cs 可见度。 这就是我是如何解决这个问题的( 标准拼写选择器, 可能有更压缩的语法 ) :

$(".item").each(function() {
    if ($(this).css("visibility") == "hidden") {
        // handle non visible state
    } else {
        // handle visible state
    }
});

其他回答

有很多方法可以检查元素是否可见或隐藏在jquery中。

demo demo html 例如引用

<div id="content">Content</div>
<div id="content2" style="display:none">Content2</div>

使用可见度过滤选择器$( 元素: 隐藏) 或$( 元素: 可见)

$( 元素: 隐藏 ) : 选择隐藏的所有元素 。 例如 : $( 内容 2: 隐藏 ) show (); $( 元素: 可见 ) : 选择可见的所有元素 。 例如 : $( 内容: 可见 ) . css ( “ 颜色 ” , “ ee ” ) ;

见http://api.jquery.com/类/选择者/visibility-filter-selectors/

正在过滤

    Example:
       $('#content').is(":visible").css('color', '#EEE');

    Or checking condition
    if ($('#content').is(":visible")) {
         // Perform action
    }

见http://api.jquery.com/is/

但如果元素的 css 和下面一样呢?

.element{
    position: absolute;left:-9999;    
}

因此,对于堆叠溢出问题的答案是,如何检查元素是否在屏幕之外,也应当考虑。

如何确定一个混合元素的状态?


您可以使用 : 可见和: 隐藏的选择器来确定元素是否崩溃。

var isVisible = $('#myDiv').is(':visible');
var isHidden = $('#myDiv').is(':hidden');

如果您只是根据一个基于其可见度的元素行事, 您可以只包括: 可见或: 隐藏在选择表达式中。 例如 :

 $('#myDiv:visible').animate({left: '+=200px'}, 'slow');

当对 : hidden 选择器在 jquery 中测试元素时,应考虑一个绝对定位元素可以被确认为隐藏,尽管其子元素是可见的。

虽然仔细看一看拼图文件能提供相关资料:

由于以下几个原因可视为隐藏要素:[.]其宽度和高度明确定为0。 [.]

因此,这实际上对框模型和元素的计算样式是有道理的。即使宽度和高度没有被明确设定为0,它们也可以被隐含地设定为0。

以下列实例为例:

控制台. log( $ ('. foo') ) ; // true control. org ($ ('.bar') ) ; / foo { 位置 : 绝对 : left: 10px; 顶层 : ff00; 位置 : 绝对 : 10px; 顶层 : 10px; 宽度 : 20px; 高度 20px; 底层 : 0000ff; } &lt; 上层 src=" https://ajax.gogleapis.com/ahax/libs/jquery/ 2. 1.1/jquery.min.js. &gt; & & lt;/ statict&gt; & & & div&gt;


jquery 3. x 的更新:

与 jquery 3 相比, 所述的行为将改变元素, 如果有任何布局框, 包括宽度为零和(或)高度的布局框, 则将被视为可见的元素 。

3 0.0 - 阿尔法1: jdidfidd with jquery 3. 0.0 - 阿尔法1:

http://jsfiddle.net/pM2q3/7/

同样的javascript代码 将会有这个输出 :

console.log($('.foo').is(':hidden')); // false
console.log($('.bar').is(':hidden')); // false

通常当检查某物是否可见时, 您会立即直接去做其他事情。 jquery 绑链很容易做到 。

所以,如果您有一个选择器, 并且您想要在它上执行某些动作, 只有当它为可见或隐藏时, 您可以使用过滤器 (“ : 可见 ” ) 或过滤器 (“ 隐藏 ” ) , 然后将它与您想要采取的行动连接起来 。

而不是这样声明:

if ($('#btnUpdate').is(":visible"))
{
     $('#btnUpdate').animate({ width: "toggle" });   // Hide button
}

或效率更高,但更丑陋:

var button = $('#btnUpdate');
if (button.is(":visible"))
{
     button.animate({ width: "toggle" });   // Hide button
}

您可以在一条线内完成全部任务:

$('#btnUpdate').filter(":visible").animate({ width: "toggle" });