2012-01-27 12 views
0

を隠していない。jQueryのカスタムドロップダウン選択ボックスIは、ドロップダウンボックス「ボックス」を活性化し、ボタン「ボタン」を持っている

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

毎回ボタンをクリックするとドロップダウンボックスが

$('.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

関連する問題