2012-01-27 75 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