Попытка создать плавную панель навигации с несколькими кнопками, а затем при нажатии на каждую кнопку выпадает небольшое деление с соответствующей информацией.
Однако у меня возникают проблемы с тем, чтобы заставить его работать правильно, когда, скажем, вы нажимаете на кнопку, он начинает открывать div, затем вы нажимаете на другую кнопку, у него возникают некоторые проблемы с загрузкой нужного контента в универсальный div, используемый для отобразить содержимое кнопки.
Какой лучший способ исправить это так, что если вы начнете открывать div с одной кнопки, а затем нажмете другую очень быстро, она скроет / остановит первую попытку и сразу же перейдет ко 2-й? Прямо сейчас, если я это сделаю, он не будет загружать контент должным образом, так как .empty () будет выполняться после начала отображения нового div.
Сейчас я просто использую функцию setTimeout, чтобы задержать ее, но она не работает правильно.
* ПРИМЕЧАНИЕ. Я использую .on вместо простого .click, поскольку меню создается динамически в зависимости от того, на какой странице находится пользователь. Это работает просто найти в привязке события 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();
});
}