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

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


当前回答

$( "div:visible" ).click(function() {
  $( this ).css( "background", "yellow" );
});
$( "button" ).click(function() {
  $( "div:hidden" ).show( "fast" );
});

api 文档: 可见选择器

其他回答

用于检查元素是否可见、不显示,甚至不透明度水平的扩展功能

如果元素不可见, 它返回错误 。

function checkVisible(e) {
    if (!(e instanceof Element)) throw Error('not an Element');
    const elementStyle = getComputedStyle(e);
    if (elementStyle.display === 'none' || elementStyle.visibility !== 'visible' || elementStyle.opacity < 0.1) return false;
    if (e.offsetWidth + e.offsetHeight + e.getBoundingClientRect().height +
        e.getBoundingClientRect().width === 0) {
        return false;
    }
    const elemCenter   = {
        x: e.getBoundingClientRect().left + e.offsetWidth / 2,
        y: e.getBoundingClientRect().top + e.offsetHeight / 2
    };
    if (elemCenter.x < 0 || elemCenter.y < 0) return false;
    if (elemCenter.x > (document.documentElement.clientWidth || window.innerWidth)) return false;
    if (elemCenter.y > (document.documentElement.clientHeight || window.innerHeight)) return false;
    let pointContainer = document.elementFromPoint(elemCenter.x, elemCenter.y);
    do {
        if (pointContainer === e) return true;
    } while (pointContainer = pointContainer.parentNode);
    return false;
}
if ( $(element).css('display') == 'none' || $(element).css("visibility") == "hidden"){
    // 'element' is hidden
}

上述方法不考虑父(父)的可见度。 如果要也考虑母( 父) , 您应该使用 .is (“ 隐藏 ” ) 或.is ( “ 可见 ” ) 。

例如,

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

上述方法将考虑在以下两种情况下显示可见的 div2 : 看不到 。 但上述方法在许多情况下可能有用, 特别是当您需要找到隐藏的父( 隐藏的父( 隐藏的父) 中是否存在错误时, 因为在这种情况下 : 可见的不会起作用 。

启动 adblucer 使用可见检查的示例 :

$( document). ready( 职能 () { 如果 ($( " ablocker check" ) ) $( " " a blockermsg" ) $( "请禁用 a blockermsg" ) 。 text ("请禁用 a blockercher " ) 。show (; }) ; & lt; 上标 src= "https://ajax.googleapis. com/ajax/ libs/ jquery/ 2. 1.1/jquery. min. js" & gt; &lt; / split&gt; /div&gt; = " a blockercheck" = " a blockergsg" ty= "display: non' gt;/ div&gt;

“ 阻塞检查” 是一个 adblocker 区块的代号。 所以如果它可见, 您可以检测是否打开了阻塞器 。

这是用来检查标签是否可见的选项

/ 使用纯 cs 选择器 { 提醒 { { / 使用jquery 过滤器 () 的方法 { / 使用 jquery's is () 方法 { { 警报 ( 段落可见 ( 使用 () 方法 ) } } ; / 使用 jquery 过滤器 () 的方法 $ ( p) 过滤器 (: 可见) { 提醒 ( 段落可见 ( 使用 () 过滤器 () 方法 检查) } } ; / / 您可以使用 hidden i 。

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

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

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