2012-01-27 72 views
0

我有一个按钮的“按钮”,激活一个下拉框的“盒子”:jQuery的自定义下拉选择框没有隐瞒

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

每次点击按钮的下拉框隐藏或显示

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

现在我想实现一个模糊处理,以便当用户单击除下拉框以外的其他东西时,该框隐藏自身。

现在,当我点击按钮的同时下拉是开放的,它关闭并重新打开。我觉得我陷入了Catch-22。

问题是,当下拉打开时单击按钮时模糊和.click都会触发。

+0

的“模糊”事件是一个对象失去焦点的行为..所以我真的想补充的东西来处理这些对象的“click”事件隐藏“取消隐藏”下拉菜单.. – hanzolo 2012-01-27 23:55:48

+0

我在代码中的其他地方,而不是问题。 – lewicki 2012-01-27 23:58:09

+0

这听起来像你有循环逻辑,你隐藏自己 – hanzolo 2012-01-28 00:04:37

回答

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 2012-01-28 00:07:50

0

尝试

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

不行。相同的结果。 – lewicki 2012-01-28 00:42:03

+0

我在'event.stopPropagation()中犯了一个错误'再试一次。 – shaunsantacruz 2012-01-28 00:56:16