私がこれを行うと仮定します:
$(target).blur(function(e){
//do stuff
});
ぼかしアクションをトリガーするためにクリックされたオブジェクトを取得する方法はありますか?
e.target
を使用してみましたが、クリックされたオブジェクトではなく、ぼかしアクションにアタッチされたオブジェクトが返されているようです。
私があなたの質問を正しく理解していれば、これはそれをするはずです:
$(function() {
var clicky;
$(document).mousedown(function(e) {
// The latest element clicked
clicky = $(e.target);
});
// when 'clicky == null' on blur, we know it was not caused by a click
// but maybe by pressing the tab key
$(document).mouseup(function(e) {
clicky = null;
});
$(target).blur(function(e) {
console.log(clicky);
});
});
トリックは、追加のティックを待つことです:
$(el).blur(function (event) {
// If we just hangout an extra tick, we'll find out which element got focus really
setTimeout(function(){
document.activeElement; // This is the element that has focus
},1);
})
イベントハンドラー内では、this
はイベントがバインドされる要素になり、e.target
は、イベントをトリガーした要素になります(this
と同じ場合もそうでない場合もあります)。
blur
イベントではなく、click
イベントを処理しています。したがって、イベント内には、blur
edした要素があります。 click
ed要素が必要な場合、それを取得するには別のイベントが必要です。
blur
は、何かに焦点を合わせるなど、他のイベントによってトリガーできます。何かをクリックするだけではありません。そのため、「ぼかしを引き起こした」要素を取得する方法はありません。
blur
ハンドラー関数内でこれを使用すると、blured
要素が得られます。
_$(target).blur(function(e){
var bluredElement = this; // dom element
// To make a jQuery object
var bluredElement = $(this);
});
_
blur
イベント内では、クリックされた要素をキャッチできません。 click
ed要素を取得するには、click
イベントが必要です。例えば:
_$(element).click(function() {
var clickedElement = this;
});
_
フォーカスされた要素を取得するには、次のような_:focus
_セレクターを使用できます。$(':focus')
は、ドキュメント内のフォーカスされた要素を返します。