如何使用 . hide () 、.show () 或.toggle () 来切换元素的可见度 ?
如果元素可见或隐藏, 我如何测试 ?
如何使用 . hide () 、.show () 或.toggle () 来切换元素的可见度 ?
如果元素可见或隐藏, 我如何测试 ?
当前回答
毕竟,没有一个例子适合我, 所以我写了我自己的。
测试( 不支持互联网探索过滤器: alpha) :
a) 检查文档是否隐藏
b) 检查元素是否为零宽度/高度/不透明或显示:无/可见度:内嵌样式中隐藏
c) 检查元素的中心(也因为它比测试每个像素/角的速度快)是否被其他元素(和所有祖先,例如:溢出:隐藏/滚动/一个元素在另一个元素之上)或屏幕边缘所隐藏
d) 检查元素是否为零宽度/高度/不透明或显示:无/可见度:以计算样式隐藏(在所有祖先中)
测试在
和机器人4.4(本地浏览器/铬/火狐)、火狐(风窗/摩克)、铬(风窗/摩克)、歌剧(风窗预示/摩克 Webkit)、互联网探索者(互联网探索者5-11文档模式+虚拟机器上的互联网探索者8)和Safari(风窗/摩克/奥兹)。
var is_visible = (function () {
var x = window.pageXOffset ? window.pageXOffset + window.innerWidth - 1 : 0,
y = window.pageYOffset ? window.pageYOffset + window.innerHeight - 1 : 0,
relative = !!((!x && !y) || !document.elementFromPoint(x, y));
function inside(child, parent) {
while(child){
if (child === parent) return true;
child = child.parentNode;
}
return false;
};
return function (elem) {
if (
document.hidden ||
elem.offsetWidth==0 ||
elem.offsetHeight==0 ||
elem.style.visibility=='hidden' ||
elem.style.display=='none' ||
elem.style.opacity===0
) return false;
var rect = elem.getBoundingClientRect();
if (relative) {
if (!inside(document.elementFromPoint(rect.left + elem.offsetWidth/2, rect.top + elem.offsetHeight/2),elem)) return false;
} else if (
!inside(document.elementFromPoint(rect.left + elem.offsetWidth/2 + window.pageXOffset, rect.top + elem.offsetHeight/2 + window.pageYOffset), elem) ||
(
rect.top + elem.offsetHeight/2 < 0 ||
rect.left + elem.offsetWidth/2 < 0 ||
rect.bottom - elem.offsetHeight/2 > (window.innerHeight || document.documentElement.clientHeight) ||
rect.right - elem.offsetWidth/2 > (window.innerWidth || document.documentElement.clientWidth)
)
) return false;
if (window.getComputedStyle || elem.currentStyle) {
var el = elem,
comp = null;
while (el) {
if (el === document) {break;} else if(!el.parentNode) return false;
comp = window.getComputedStyle ? window.getComputedStyle(el, null) : el.currentStyle;
if (comp && (comp.visibility=='hidden' || comp.display == 'none' || (typeof comp.opacity !=='undefined' && comp.opacity != 1))) return false;
el = el.parentNode;
}
}
return true;
}
})();
如何使用 :
is_visible(elem) // boolean
其他回答
if($('#id_element').is(":visible")){
alert('shown');
}else{
alert('hidden');
}
if($("h1").is(":hidden")){
// your code..
}
i 将使用 cs 类. hide { 显示: 无重要;} 。
对于隐藏/显示, 我调用. addclass (" hide") /. remove class (" hide") /. remove class (" hide") 来检查可见度, 我使用. has class (" hide" ) 。
如果您不打算使用.toggle () 或. animate () 方法, 这是一个简单明了的检查/ 隐藏/ 显示元素的方法 。
您可以在显示或隐藏 cs 类时,通过切换该类来使用该 Cs 类 :
.show{ display :block; }
设置您的 jquery toggle类 () 或添加类 () 或删除类 () 。
举个例子,
jquery (' myid'. 切换类 ('show')
当元素没有显示时, 上面的代码会添加显示 cs 类, 而当元素显示类别时, 将会删除 。
当你在检查它是否可见时, 你可以遵循这个拼字码,
jquery ('mid'.) 有类('show');
上面的代码将返回一个布尔, 当 Myid 元素含有我们的类( show) , 而当它没有( show) 类( show) 时则返回一个布尔 。
有太多的方法可以检查隐藏元素。 这是最好的选择(我刚刚推荐你):
使用 jquery, 生成一个元素, 隐藏在 css 中的“ display: noone ” 。
要点是:
$('element:visible')
和供使用的示例:
$('element:visible').show();