2012-04-08 85 views

回答

8

我從來沒有用過的Zepto,但:

.css('display') !== 'none' 

可能會工作。 Here's a demo.

+0

問題不詢問元素是否未隱藏。如果該元素設置爲「visibility:hidden」,該怎麼辦? – hohner 2012-04-08 21:37:47

+0

@minitech不錯/謝謝,我覺得應該是這樣。我不確定Zepto是否有另一種內置方式。如果您查看'.toggle()'方法的來源,Bonzo(https://github.com/ded/bonzo)基本上也會這樣做。它檢查原生的'el.style.display!=='none''以及是否有寬度或高度。 – ryanve 2012-04-08 21:48:31

+1

@Jamie根據http://api.jquery.com/visible-selector/ – ryanve 2012-04-08 21:49:55

-1

如何

.css('display') === 'block' 

,或者如MiniTech移動建議:

.css('display') !== 'hidden' 

如果你真的需要使用這些僞選擇,可以隨時implement them manually

+2

的Zepto不支持':hidden'。 – Ryan 2012-04-08 21:29:13

+0

+1鏈接到gist =) – ryanve 2012-04-08 22:36:24

+2

不可見元素具有'display = none'而不是'display = hidden' – enyo 2012-05-22 18:16:39

1

我不是太熟悉的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 
} 
+1

,「可見性:隱藏」或「不透明度:0」的元素被視爲可見,因爲它們仍然佔用佈局空間「請注意,塊「不是唯一可能的可見的」顯示「類型。有'inline','inline-block','table','table-row','table-cell' ...你可以看到圖片。 – Ryan 2012-04-08 21:32:18

+0

你是對的,我做了倒退。讓我解決這個問題... – faino 2012-04-08 21:33:34

+0

@minitech是正確的顯示類型。作爲黑客,我認爲這可能是最好的解決方案 – hohner 2012-04-08 21:38:28