2012-01-27 2 views
0

У меня есть кнопка «кнопка», которая активирует «окно» раскрывающийся коробе:JQuery пользовательских выпадающее выбрать окно не скрывая

$('.button').click(function() 
{   
    $(this).siblings(".box").toggle(); 
}); 

Everytime нажата кнопка шкуры выпадающего списка или показывает

$('.box').blur(function() 
{ 
    $(this).hide(); 
}); 

Теперь я хочу реализовать размытие, так что когда пользователь щелкает что-то, кроме раскрывающегося окна, ящик скрывается.

НО

Теперь, когда я нажимаю кнопку в то время как выпадающий открыт, он закрывается и вновь открывается. Я чувствую, что застрял в Catch-22.

Проблема в том, что размытие и .click срабатывают, когда я нажимаю кнопку, когда раскрывающийся список открыт.

+0

«размывание» событие является актом потери фокуса на объекте .. так что действительно я хотел бы добавить что-то, чтобы справиться с «нажмите кнопку» событие из этих объектов, чтобы скрыть «Откровенное» падение падения .. – hanzolo

+0

У меня есть это в другом месте в коде, и это не проблема. – lewicki

+0

похоже, что у вас круговая логика, вы снова показываете ее после того, как она скрывается сама. – hanzolo

ответ

0

Вместо того, чтобы использовать размытие, искать щелчком в любом месте документа, но предотвратить бурлит при нажатии на поле или кнопку.

$('.button').click(function(event) { 
    $(this).siblings('.box').toggle(); 
}); 
$('html').click(function() { 
    $('.box').hide(); 
}); 
$('.box, .button').click(function() { 
    event.stopPropagation(); 
}); 

http://jsfiddle.net/bLdtz/

0
$('.box').blur(function() 
{ 

    if($(this).is(":visible"))  
    $(this).toggle(); 

}); 
+0

это не работает. функция щелчка будет нажата и увидит, что она скрыта и отображает ее. – lewicki

0

Попробуйте

$('.box').blur(function(event) 
{ 
    $(this).hide(); 
    event.stopPropagation(); //prevent event from bubbling up the DOM 
}); 
+0

Нет. Те же результаты. – lewicki

+0

У меня была опечатка в 'event.stopPropagation()' Попробуйте еще раз. – shaunsantacruz

Смежные вопросы