13

いくつかのリンク/ボタンを含む jQuery を介して動的に作成している div があります。この div がフォーカスを失ったら、削除する必要があります。この部分は大丈夫です。

ただし、現在、div のラッパーに focusout イベントがあり、div 内のボタンをクリックすると、ラッパーが子にフォーカスを失い、イベントが発生します。クリックされた要素がラッパーの子であるかどうかを確認することはできますが、ラッパーにフォーカスがなくなったため、div を削除するためにイベントが再び発生することはありません。

.blur も試しましたが、うまくいきません。

これを行う最善の方法は何ですか?

4

3 に答える 3

18
$("#yourDiv").focusout(function () {
   if ($(this).has(document.activeElement).length == 0) {
       // remove div
   }
});

$(this)= 焦点を合わせている div。

document.activeElement= 現在フォーカスされている要素。

$(this).has(document.activeElement)アクティブな要素が div の子であるかどうかを確認するだけです

于 2015-02-12T16:57:42.487 に答える