4

ユーザーが別の特定のdivをクリックしない限り、テキストボックスがフォーカスを失った場合、divを非表示にしたいだけです。ユーザーがその特定の div をクリックすると、focusout によって div.box が非表示になることはありません。

以下は、私の疑似コードのコメントを含むコードです。何か案は?

textInput.focusout(function() {
    // So long you didn't click div.stop, then
        $('div.box').hide();
});
4

3 に答える 3

4
$(document).bind('click',function(e) {
  if ($(e.target).closest('div.box').length) return;
  $('div.box').hide();
});

これを試して!

于 2012-03-27T06:55:40.123 に答える
3
var flag = false;

$('div.stop').click(function() {flag = true;});
textInput.focusout(function() {
    // So long you didn't click div.stop, then
    if(!flag)
        $('div.box').hide();
});

フラグ変数の追加を避けたい場合は、jQuery の.datadiv.stopを使用して、要素などに対してフラグ値を保存できます。

$('div.stop').click(function() {$(this).data('clicked', true);});

// ...

    if(!$('div.stop').data('clicked'))
// ...

編集

テキスト ボックスにフォーカスがあり、[ ] をクリックする状況を許容しdiv.stopたい場合、非表示にしたくない場合は、次のような方法を試してください。

$('div.stop').click(function() {$('div.box').stop();});
textInput.focusout(function() {
    // So long you didn't click div.stop, then
    $('div.box').delay(200).hide();
});
于 2010-09-22T06:01:32.147 に答える
2
var flag = false;
$('#inputID').blur(function(){
   $('div.box').toggle(flag);       
});

$('#someDIVid').click(function(){
    flag = true;
});

簡単なデモ

追記:

.toggle(表示または非表示)

showOrHide要素を表示するか非表示にするかを示すブール値。このパラメータがtrueの場合、一致した要素が表示されます。の場合false要素は非表示になります。

于 2010-09-22T06:06:05.417 に答える