2013-10-02 36 views
0

比方說,我有2個元素,div1和div2。當我點擊div1時,div2應該在visibility=hiddenvisibility=visible之間.toggleClass()。這工作正常。但是,當我嘗試這個:如何檢查元素visibility = hidden是否爲true jQuery

if($('#div2').css('visibility') == 'hidden') { 
$('#div1').replaceWith('<span> Duh </span>'); 
} 

沒有真正發生。如果我將'hidden'更改爲'visible',它工作得很好。但那不是我想要的。我知道當可見性=隱藏在使用中時,元素仍然被視爲可見,但是不要檢查元素的樣式是否設置爲visibility = hidden?在我的情況下應該是真的。

我也試過

if($('#div2').hasClass('visHidden')) { 
$('#div1').replaceWith('<span> Duh </span>'); 
} 

但沒有任何反應。

難道問題是DOM何時加載visHidden和visVisible類都沒有設置?因爲如果元素被點擊,我只用jQuery來設置它們。如果是這種情況,有沒有辦法繞過它?我無法使用顯示屬性。

+0

你能提供的jsfiddle? – Pouki

+0

什麼時候執行snipplets? (它聽起來像你期望的代碼會導致div1自動更新,當你改變div2的類) – subsub

+0

@subsub你是絕對正確的。我添加了一個刷新按鈕:'$('#refresh')。click(function(){...}'之後,if語句正確執行,感謝您指出應該顯而易見的東西.. – user2829315

回答

-1

您應該嘗試.is()方法jquery來檢查可見性。

$(element).is(":visible") // Checks for display:[none|block], ignores visible:[true|false] 
你的情況

if(!$('#div2').is(":visible")) { 
    $('#div1').replaceWith('<span> Duh </span>'); 
} 
-1

這是你的答案

if($('#div2').is(':visible')) {....} 
+0

不,它不是。 ':visible'不支持可見性與'visibility' CSS屬性切換的元素。 – JJJ