4

ユーザーが要素から離れた場所をクリックしたときに、HTML 要素とその子がいつフォーカスを失うかを判断したいと考えています。例えば:

<div id="boxA">
  <ul>
    <li>x</li>
    <li>y</li>
    <li>z</li>
  </ul>
</div>
<div id="boxB">
...
</div>

現時点で私は持っています:

$("#boxA").live('blur', function() { hideFunction();  });

ただし、これは機能しません。ボックス A 内の任意の要素をクリックすると、フォーカスが失われますが、ボックス B がクリックされたとき、またはページ上の他の場所がクリックされたときにのみ発生するようにしたいと考えています。

編集と解決

このソリューションは Stack Overflow で見つけました。わたしにはできる:

jQuery を使用して、ユーザーが DIV の外側をクリックしたときに DIV を非表示にします

4

5 に答える 5

2

あなたのdivにtabindex属性を与えてみてください:

<div id="boxA" tabindex="0">
  <ul>
    <li>x</li>
    <li>y</li>
    <li>z</li>
  </ul>
</div>
<div id="boxB" tabindex="1">
...
</div>

ドキュメントから:

最近のブラウザ バージョンでは、要素の tabindex プロパティを明示的に設定することで、[focus] イベントを拡張してすべての要素タイプを含めることができます。要素は、Tab キーなどのキーボード コマンドを使用するか、要素をマウスでクリックすることによって、フォーカスを得ることができます。

于 2012-11-19T15:13:39.187 に答える
0

多分これらの線に沿った何か:

$('#boxA, #boxA > *').focusout(function () {
if ($(document.activeElement).closest('#boxA').length == 0){
    alert("not focused");
}
});

http://jsfiddle.net/AjT9j/3/

于 2012-11-19T15:30:52.567 に答える
0

これを試して、うまくいったかどうか教えてください:

$("body").not("#boxA, #boxA ul li").live('focus', function(){ hideFunction(); });
于 2012-11-19T15:15:23.557 に答える
-1

この答えが言うように、 を持つ要素はtabindexフォーカスを受け取ることができます。おそらくそれがあなたの答えです。

どの HTML 要素がフォーカスを受け取ることができますか?

于 2012-11-19T15:13:33.497 に答える