いくつかのボタンを持つスムーズなナビゲーションバーを作成しようとすると、各ボタンがクリックされると関連する情報が少しずつ表示されます。JQuery - ナビゲーションメニューslideUp/slideDownへの移行
しかし、ボタンをクリックするとdivを開き、別のボタンをクリックすると、正しいコンテンツをユニバーサルdivにロードする際に問題が発生しますボタンのコンテンツを表示します。
あなたがあるボタンからdivを開いてからもう1つの本当のクイックをクリックすると、最初の試行を隠したり、すぐに2番目のボタンに移動するように修正するにはどうすればいいですか?今、私がそれを行うと、新しいdivが表示された後に.empty()が実行されるため、コンテンツが正しくロードされません。
今、私はちょうどそれを遅延させるためにsetTimeout関数を使用しますが、正しく動作しません。
*注 - ちょうど.clickの代わりに.onを使用します。これは、ユーザーがどのページにいるかによってメニューが動的に作成されるためです。これはclickイベントをバインドするのに役立ちます。
//CONTROL BAR
//CLICK OFF OF FORMS
$(document).on('click','.clear_overlay, .control_bar',function(){
hideForm();
});
//SHOW FORM
$(document).on('click','.control_bar li.button',function(){
//CHECK IF CURRENTLY OPEN
if(!$(this).hasClass('pressed')){
var form = this;
setTimeout(function(){showForm(form)},210);
}
});
//SHOW FORM
function showForm(form){
var str = $(form).attr('class').split(' ');
var cl = str[0];
var id = $(form).attr('id');
var x = $(form).position().left;
var y = $(form).position().top;
x += 230;
y += 50;
$('.clear_overlay').show();
$('body').css('overflow','hidden');
$('.control_bar_form').load('_forms/'+cl+'.php',function(){
$('.control_bar_form').find('.button_submit').attr('id',id);
$('.control_bar_form').css({ "left": x, "top":y });
$('.control_bar_form').slideToggle(200);
$(form).addClass('pressed');
});
}
function hideForm(){
$('.clear_overlay').hide();
$('body').css('overflow','auto');
$('.control_bar_form').slideUp(200,function(){
$('.control_bar li').removeClass('pressed');
$('.control_bar_form').empty().css('width','auto');
$('.control_bar_form :input[type="text"]').val('');
$('.control_bar_form :input[type="checkbox"]').removeAttr('checked');
$('.clear_overlay').hide();
});
}
いいえ、うまくいきません。ナビゲーションメニューの内容が動的に作成されるため、.onを使用して行う必要があります。したがって、通常の.click関数を使用することはバインドされません。 – JimmyJammed
O ok、正直言って私は何の問題も見ません。 SafariまたはFFでそれを実行し、[要素の検査]をクリックしてエラーを確認してください。非常に役立ちます。 –
実際のエラーはありません。このエラーは、 'slideDown'が発生したときに 'slideUp'が終了していないため、slideUpコールバックで呼び出された.empty()関数が、他のdivのslideDown(および新しいコンテンツの読み込み)新しいdivの内容が空になってしまいます。 – JimmyJammed