2012-02-01 20 views
0

表示したい要素にトグルを設定しました。4要素(3 ids、1クラス)を隠しています。jquery異なる要素の表示と非表示を切り替える...混乱する

はここ

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

これらの4つの要素は、ページのロードに最初のトグルに隠されている私のjQueryの、それらのすべてを示しています。私がもう一度隠れるように切り替えると、大丈夫です。しかし、もし私が再び彼らを見せるためにトグルすれば。 .userprofileは表示されません。これはCSSのIDではなくクラスだからですか?

それはなぜそれに効果がありますか?事前に

おかげで...

+0

.userprofileのCSSとはこの要素にはインラインスタイルがありますか? –

+0

最初 - 表示:なし;それからそれはまた(目に見える時) - 高さ:56px; \t margin-left:12px; \t margin-bottom:10px; \tポジション:絶対; \t top:0px; }インラインスタイルはありません:/ –

+0

"left:0"を入力してください。残りはよさそうだ。 –

答えて

1

代わり.userprofile CSSでdisplay: none;を使用しての、このようなjQueryを使って要素を非表示:

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

は、より多くの情報のためにこれを参照してください。​​

具体的には、

一致する要素は、hidアニメーションなしで即座にデンします。 を除いて、表示プロパティをjQueryのデータ キャッシュに保存しておき、後で表示を初期値に戻すことができることを除けば、.css( 'display'、 'none')を呼び出すのとほぼ同じです。 要素にインラインの表示値がある場合は、非表示になり、 がインラインで表示されます。

逆に、それは最初にそれをdisplay: none;の同じ値を与える背面にそれをトグルdisplay: none;の値を持っている場合。

+2

この方法の問題は、4つの要素がページロードする。 – jpatiaga

+0

私はそれを隠すために要素に 'height:0px;'を設定し、それをjQueryで隠した後に高さを調整することで、一般的にそれをハックします。それを行うより良い方法はありますか? jQueryに扱いやすくするために、通常は 'display:none;'を使いません。 – Mark

+0

私は隠されたオブジェクトを初期化するために私のcssファイルに '.hide {display:none;}'クラスを持っています。次に、ページjsで '.hide()'と '.show()'を使用します。 – jpatiaga

関連する問題