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

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


当前回答

元素能见度和支流如何运作;

可用下列显示方式隐藏元素: 无、 可见度: 隐藏或不透明: 0。 这些方法之间的差异 :

显示: 没有隐藏元素, 它不占用任何空间; 可见性: 隐藏元素, 但是它仍然在布局中占据空间; 透明性: 0 将元素隐藏为“ 可见性: 隐藏 ” , 它仍然在布局中占据空间; 唯一不同之处在于不透明让元素部分透明; 如果 $ ('. target') , 是 (': hidden' ) {( $ ('. target'. show (); ) 其它 { ($ ('. target'. hide ()); } 如果 ($ ('. target') ) { $ ('. target'). hide (); 其它 { ( $ (' 目标) 。

其他回答

由于问题只涉及一个要素,本守则可能更适合:

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

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

它与twern的建议相同,但适用于一个单一要素;它与jquery faq中推荐的算法相符。

我们用 jquery's is () 来检查选中元素与其它元素、 选择器或任何 jquery 对象的对比。 此方法沿 dom 元素绕行查找匹配, 满足已传递参数 。 如果匹配, 返回为真, 否则返回为假 。

简单检查显示属性(或视您喜欢的隐形类型而定的可见度) 。 例如 :

if ($('#invisible').css('display') == 'none') {
    // This means the HTML element with ID 'invisible' has its 'display' attribute set to 'none'
}

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

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

要检查是否显示 I 使用 :

if ( !$('#book').is(':visible')) {
    alert('#book is not visible')
}

或以下是 sam , 将jquery 选择器保存在一个变量中, 以便在需要它多次时有更好的性能 :

var $book = $('#book')

if(!$book.is(':visible')) {
    alert('#book is not visible')
}

此处还包含一个永久有条件的表达式, 以检查元素的状态, 然后切换它 :

$('someElement').on('click', function(){ $('elementToToggle').is(':visible') ? $('elementToToggle').hide('slow') : $('elementToToggle').show('slow'); });