Почему функция focusin внутри blur не срабатывает?

Всем привет.

Столкнулся тут с проблемой. Подумал, может вы поможете мне.

Есть всплывающее окошко(div#loginbox), внутри которого есть input. Этот div может получать фокус.

Мне нужно, чтобы при клике вне этого окошка, div#loginbox пропадал. Сделать я это решил через blur евент. Но в данный момент при фокусе на input

var art = false;<br>
$('#loginbox').blur(function(){<br>
	$(this).focusin(function(){<br>
		art = true;<br>
	});<br>
	console.log(art); //В любом случае false.. Из-за этого срабатывает if снизу, хотя не должен..<br>
	if(!art) {<br>
		$('#loginbox').stop().fadeOut('fast',function(){<br>
			$('#loginlink').prop('href','#login');<br>
			window.location.hash = '#';<br>
		});<br>
		$('#loginlink').removeClass('selected');<br>
		$('.tooltip').css('display','none');<br>
		Cufon.refresh();<br>
	}<br>
});<br>




Заранее благодарю за помощь! :)
  • Вопрос задан
  • 2601 просмотр
Пригласить эксперта
Ответы на вопрос 2
creage
@creage
Плохой подход. У вас при фокусе инпута срабатывает блур диалога, что очевидно — фокус сменен с одного элемента на другой.

Как бы сделал я — снизу диалога показываем полупрозрачный (или вообще прозрачный) див на весь экран, по клику на нем прячем диалог. Все элементарно.

P.S. И да — почитайте доки jQuery — ваш код без слез читать нельзя.
Ответ написан
taliban
@taliban
php программист
Не идеальный вариант, но вполне работоспособный.
$(document).delegate('click', function(){
    if( $(this).closest('#loginbox') !== null )
    {
        $('#loginbox').hide();
    }
});
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы