更新:私のソリューションを完全に書き直す必要がありました。blur
イベント ハンドラーは、フォーカスを失うイベントに関連付けられます。イベントに似ていれば、どのmouseout
要素がフォーカスを取得するかを知ることができますが、そのような運はありません。.click
そのため、イベントをリッスンする代わりに、キャプチャ イベントに頼る必要があり、それに基づいて関数をトリガーする必要がありblur
ます。
var inputIsBlurred = function() {
console.log('Run away!!!');
};
$(document).click(function(e){
var $target = $(e.target);
console.log($target);
if ($target.is('#some_input') // fired by an input - no special effects
|| $target.is('#show-anyways') // fired by 'show-anyways' div
|| $target.parents('#show-anyways').length > 0 // ... or its children
) {
return true; // move along, nothing to do here
}
inputIsBlurred();
});
ここで遊ぶためのフィドルです。私の元の答えによって引き起こされた混乱をお詫びします。(