如何使用 . hide () 、.show () 或.toggle () 来切换元素的可见度 ?
如果元素可见或隐藏, 我如何测试 ?
如何使用 . hide () 、.show () 或.toggle () 来切换元素的可见度 ?
如果元素可见或隐藏, 我如何测试 ?
当前回答
因为元素具有可见度: 隐藏或不透明: 0 被视为可见, 因为它们仍然消耗着布局中的空间( 如 jquery 描述为 jquery : 可见选择器) - 我们可以检查元素是否以这种方式真正可见 :
function isElementReallyHidden (el) {
return $(el).is(":hidden") || $(el).css("visibility") == "hidden" || $(el).css('opacity') == 0;
}
var booElementReallyShowed = !isElementReallyHidden(someEl);
$(someEl).parents().each(function () {
if (isElementReallyHidden(this)) {
booElementReallyShowed = false;
}
});
其他回答
isHidden = function(element){
return (element.style.display === "none");
};
if(isHidden($("element")) == true){
// Something
}
if($(element).is(":visible")) {
console.log('element is visible');
} else {
console.log('element is not visible');
}
这是用来检查标签是否可见的选项
/ 使用纯 cs 选择器 { 提醒 { { / 使用jquery 过滤器 () 的方法 { / 使用 jquery's is () 方法 { { 警报 ( 段落可见 ( 使用 () 方法 ) } } ; / 使用 jquery 过滤器 () 的方法 $ ( p) 过滤器 (: 可见) { 提醒 ( 段落可见 ( 使用 () 过滤器 () 方法 检查) } } ; / / 您可以使用 hidden i 。
这些答案都没有涉及我所理解的问题, 也就是我正在寻找的问题, “我如何处理有可见度的项目:隐藏的?” 。 无论是: 可见的还是: 隐藏的, 都无法处理, 因为两者都在寻找文档中的显示。 据我所知, 没有选择器可以处理 cs 可见度。 这就是我是如何解决这个问题的( 标准拼写选择器, 可能有更压缩的语法 ) :
$(".item").each(function() {
if ($(this).css("visibility") == "hidden") {
// handle non visible state
} else {
// handle visible state
}
});
使用类切换,而不是样式编辑.
使用指定用于“ 隐藏” 元素的类是容易的, 也是最有效的方法之一 。 套用“ 隐藏” 的显示样式“ 无” 将比直接编辑该样式更快 。 我在堆叠溢出问题中解释了其中的一些内容, 使两个元素可见/ 隐藏在同一 div 中 。
缩略式最佳做法和优化
Google前端工程师Nicholas zakas在Google科技演讲中,
加速您的 Javascript (Youtube) 速度