Div内のすべての子要素を非表示にします。そして、関数に渡された特定のものを表示します。
_function subDisplay(name) {
$("#navSub").each(function() {
$(this).hide();
});
$(name).show();
}
_
次に、次のようなonmouseイベントから関数を呼び出します:subDisplay(#DivIwantToShow);
しかし、何も表示されません...
何が間違っていますか?
含まれているdivではなく、子を非表示にする必要があります。
$("#navSub").children().hide();
そのため、表示しようとしているdivが親divの要素である場合、他のdivは非表示のままになります。
#navSub
の子をターゲットにしている場合は、エレメントnavSub
ではなく、それらをターゲットにして非表示themにする必要があります; children()
メソッドを使用して実行できます。
function subDisplay(name) {
$('#navSub').children().hide();
$(name).show();
};
そうでない場合、DOMに同じIDを持つ複数の要素があるように見えますが、これは許可されていません。
次に、文字列(有効なjQueryセレクター)をsubDisplay()
に渡す必要があります。
subDisplay('#DivIwantToShow');
@dotwebと@Mattからのすばらしいコメントを要約します。
function subDisplay(name) {
$('#navSub').hide();
$(name).show();
}
subDisplay('#DivIwantToShow');
要素の名前がnameで渡される場合、これを使用します:
if($(this).attr('name') != name){
//Hide it
} else {
//show it
}
function subDisplay(name) {
$("#navSub").hide();
$('#'+name).show();
}
次のように、ループの外側に置いてみてください。
function subDisplay(name) {
$("#navSub").hide();
$(name).show();
}