【发布时间】:2012-04-21 10:30:21
【问题描述】:
【问题讨论】:
标签: javascript zepto
【问题讨论】:
标签: javascript zepto
【讨论】:
visibility:hidden怎么办?
.toggle() 方法的来源,Bonzo (github.com/ded/bonzo) 基本上也会这样做。它检查原生el.style.display !== 'none' 以及是否有宽度或高度。
visibility: hidden 或 opacity: 0 的元素被认为是可见的,因为它们仍然占用布局中的空间”根据api.jquery.com/visible-selector
我对 Zepto 不太熟悉,但是我想您可以只使用基本的 JavaScript 来进行某种形式的检测:
function isVis(ele) {
if(ele.css('display')!='none' && ele.css('visibility')!='hidden' && ele.height()>0) {
return(true);
} else {
return(false);
}
}
然后在使用中:
var div=$('#div_id');
if(isVis(div)) {
// Element is visible
} else {
// Element in not visible
}
【讨论】:
block 并不是唯一可能可见的 display 类型。有inline、inline-block、table、table-row、table-cell……你懂的。
Zepto 有一些官方扩展。您可以包含 selector 模块来启用.is(':hidden')
【讨论】:
怎么样
.css('display') === 'block'
或者,正如 minitech 建议的那样:
.css('display') !== 'hidden'
如果你真的需要使用这些伪选择器,你可以随时implement them manually。
【讨论】:
:hidden。
display=none 而不是display=hidden