2012-02-01 42 views
0

我有一個切換設置在我想要顯示的元素上隱藏4個元素(3個ids,1個類)。jquery切換顯示和隱藏不同的元素......令人困惑

這裏是我的jQuery

$('#tap-menu').click(function() { 
    $('#left-column, #settings, #ortibi, .userprofile').toggle(); 
}); 

這4個元素是隱藏在頁面加載和第一肘,全部顯示出來。如果我切換到隱藏,那很好。但是,如果我切換到再次顯示它們。 .userprofile不顯示。這是因爲它是一個類而不是CSS中的ID?

爲什麼會這樣呢?

在此先感謝...

+0

.userprofile的CSS是什麼?這個元素是否有任何內聯樣式? – 2012-02-01 20:50:40

+0

最初 - 顯示:無;然後它也有(當可見) - 高度:56px; \t margin-left:12px; \t margin-bottom:10px; \t position:absolute; \t top:0px; }無內聯樣式:/ – 2012-02-01 20:52:20

+0

您應該提供「left:0」。其餘的看起來不錯。 – 2012-02-01 20:55:33

回答

1

而不是在.userprofile CSS使用display: none;的,隱藏的jQuery的元素是這樣的:​​

$(function(){ 
    $('#left-column, #settings, #ortibi, .userprofile').hide(); 
}); 

有關更多信息,請參見本具體來說:

匹配的元素將被隱藏立即沒有動畫的書房。 這大致等同於調用.css('display','none'),除了 顯示屬性的值保存在jQuery的數據 緩存中,以便稍後可以將顯示恢復到其初始值。如果 元素具有內聯的顯示值,則隱藏並顯示,它將再次以內聯方式顯示。

反之,如果最初有display: none;切換回上會給它的display: none;相同的值。

+2

這種方法的問題是,4個元素將可見,直到頁面負載。 – jpatiaga 2012-02-01 20:58:18

+0

我通常通過在元素上設置'height:0px;'來隱藏它,然後在用jQuery隱藏它之後調整高度。有沒有更好的方法來做到這一點?我通常不會嘲笑'display:none;',因爲讓jQuery處理它更容易。 – Mark 2012-02-01 21:06:42

+0

我通常在我用來初始化隱藏對象的css文件中有一個類'.hide {display:none;}'。然後我在頁面js中使用'.hide()'和'.show()'。 – jpatiaga 2012-02-01 21:10:03