Здравствуйте.
Появилась следующая задача, когда делал сайт, имеется
<div id="mlogin_form"></div>, внутри которого есть 2 input'a, так вот, при фокусе этих инпутов необходимо создавать под формой и анимировать по высоте блок (будто он выплывает), при блюре, соответственно наоборот, заплывает назад. Все просто, если бы не одна тонкость, при переходе между этими инпутами также возникают события фокус и блюр, но при этом наш новый блок должен стоять на месте (надеюсь понятно объяснил).
Я даже решил эту задачу, но решил в лоб, делает вид, что работает, но меня очень беспокоит этот быдло-код с таймерами:
$('#mlogin_form input').focus(function() {
$('body').append('<div id="login_more"></div>');
$('#login_more').offset({left: $('#mlogin_form').position().left});
if (!loginTime) {
$('#login_more').css({height: "0px"});
$('#login_more').animate({height: "35px"}, 200);
}
loginTime = false;
});
$('#mlogin_form input').blur(function() {
loginTime = true;
$('#login_more').remove();
setTimeout(function() {
if (loginTime) {
$('body').append('<div id="login_more"></div>');
$('#login_more').offset({left: $('#mlogin_form').position().left});
$('#login_more').animate({height: "0px"}, 200, function() {
$('#login_more').remove();
});
}
loginTime = false;
}, 1);
});
Подскажите, может есть более изящное решение в данной ситуации, а то меня, честно, пугает такой код
Ах, да, булева переменная loginTime - глобальная для этих функций и по-умолчанию false.
Спасибо!