私はこれを機能させるのに苦労しています。メニューを表示する一連のクリック可能なボタンを作成しています。私はそれを次のように機能させることを目指しています:
- ドロップダウンメニューがすべて非表示になっている場合-高さをアニメートする
- ドロップダウンメニューが表示されている場合-表示/非表示でメニューを切り替えます
新しいドロップダウンメニューのアニメーションが両方のシナリオで同じである場合、これをうまく行うことができます。しかし、それは私が望む外観ではありません。すでに開いているときの表示/非表示の「トグル」と、初めて開いたとき(および一度閉じたとき)の高さのアニメーションが本当に欲しいです。さらに一歩進んで、最初の開閉にはドラッグダウン/アップを有効にし、一度開いたらドロップダウンメニュー間を移動するには左/右にスワイプする可能性があるため、シナリオごとに個別のアニメーションが必要になるもう1つの理由です。
最初にイベントでそれを試してみました。つまり、click()ボタンとif()all:hidden、次にこれを実行します... click()ボタンとif():visible、次にその他を実行します。しかし、それは機能しませんでした。メニューが開いてすぐに閉じました(ifステートメントが同時に認識されたために両方の.click()イベントが連続して発生していたためだと思いますか?わかりません)。
次の試みは、以下のとおりですが、各.click()を独自のifステートメントでラップして、それぞれを個別に定義しようとしました。しかし、次のフィドルからわかるように:
動作しません...
これがjQueryです:
//sideUI drop down
if( $('#sideUIContainer').is(':hidden') && $('#sideUISearchContainer').is(':hidden') && $('#sideUIActionContainer').is(':hidden') ){
$('#navNavigate').click(function(){
$('#sideUIContainer').show();
$('#sideUIContainer, #sideUISearchContainer, #sideUIActionContainer').animate({'height':'504px'});
$('#navNavigate').addClass('active');
}
$('#navSearch').click(function(){
$('#sideUISearchContainer').show();
$('#sideUIContainer, #sideUISearchContainer, #sideUIActionContainer').animate({'height':'504px'});
$('#navSearch').addClass('active');
}
$('#navAction').click(function(){
$('#sideUIActionContainer').show();
$('#sideUIContainer, #sideUISearchContainer, #sideUIActionContainer').animate({'height':'504px'});
$('#navAction').addClass('active');
}
};
// toggle drop down when UI open - menu
if($('#sideUIContainer').is(':visible')){
$('#navNavigate').click(function(){
$('#sideUIContainer, #sideUISearchContainer, #sideUIActionContainer').animate({'height':'0'}, function(){
$('#sideUIContainer').hide();
$('#navNavigate').removeClass('active');
});
}
$('#navSearch').click(function(){
$('#sideUIContainer').hide();
$('#navNavigate').removeClass('active');
$('#sideUISearchContainer').show();
$('#navSearch').addClass('active');
});
$('#navAction').click(function(){
$('#sideUIContainer').hide();
$('#navNavigate').removeClass('active');
$('#sideUIActionContainer').show();
$('#navAction').addClass('active');
});
};
// toggle drop down when UI open - search
if($('#sideUISearchContainer').is(':visible')){
$('#navNavigate').click(function(){
$('#sideUISearchContainer').hide();
$('#navSearch').removeClass('active');
$('#sideUINavigateContainer').show();
$('#navNavigate').addClass('active');
});
$('#navSearch').click(function(){
$('#sideUIContainer, #sideUISearchContainer, #sideUIActionContainer').animate({'height':'0'}, function(){
$('#sideUISearchContainer').hide();
$('#navSearch').removeClass('active');
});
}
$('#navAction').click(function(){
$('#sideUISearchContainer').hide();
$('#navSearch').removeClass('active');
$('#sideUIActionContainer').show();
$('#navAction').addClass('active');
});
};
// toggle drop down when UI open - action
if($('#sideUIActionContainer').is(':visible')){
$('#navNavigate').click(function(){
$('#sideUIActionContainer').hide();
$('#navAction').removeClass('active');
$('#sideUINavigateContainer').show();
$('#navNavigate').addClass('active');
});
$('#navSearch').click(function(){
$('#sideUIActionContainer').hide();
$('#navSearch').removeClass('active');
$('#sideUISearchContainer').show();
$('#navSearch').addClass('active');
});
$('#navAction').click(function(){
$('#sideUIContainer, #sideUISearchContainer, #sideUIActionContainer').animate({'height':'0'}, function(){
$('#sideUIActionContainer').hide();
$('#navAction').removeClass('active');
});
}
};
上記を明確にする必要がある場合はお知らせください。しかし、うまくいけば、私のフィドルとjQueryコードが、私がやろうとしていることを皆さんがさらに理解するのに役立つことを願っています。
ありとあらゆる助けを大いに感謝します。ありがとう!