私がこれを行うと仮定します:
$(target).blur(function(e){
//do stuff
});
ぼかしアクションをトリガーするためにクリックされたオブジェクトをフェッチする方法はありますか?
を使用してみe.target
ましたが、クリックされたオブジェクトではなく、ぼかしアクションにアタッチされたオブジェクトが返されているようです。
私がこれを行うと仮定します:
$(target).blur(function(e){
//do stuff
});
ぼかしアクションをトリガーするためにクリックされたオブジェクトをフェッチする方法はありますか?
を使用してみe.target
ましたが、クリックされたオブジェクトではなく、ぼかしアクションにアタッチされたオブジェクトが返されているようです。
秘訣は、余分なティックを待つことです。
$(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);
})
私があなたの質問を正しく理解しているなら、これはそれをするはずです:
$(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);
});
});
イベントハンドラー内でthis
は、イベントがバインドされてe.target
いる要素であり、イベントをトリガーした要素になります(と同じである場合とそうでない場合がありますthis
)。
blur
あなたはイベントではなく、イベントを渡していclick
ます。したがって、イベント内には、blur
編集した要素が含まれます。click
ed要素が必要な場合は、それを取得するために別のイベントが必要になります。
blur
何かに焦点を合わせるなど、他のイベントによってトリガーされる可能性があります。何かをクリックするだけではありません。したがって、「ぼやけを引き起こした」要素を取得する方法はありません。
blur
ハンドラー関数内でこれを使用すると、ぼやけた要素が得られます。
$(target).blur(function(e){
var blurredElement = this; // dom element
// To make a jQuery object
var blurredElement = $(this);
});
イベント内でblur
は、クリックされた要素をキャッチできません。ed要素を取得するには、イベントclick
が必要ですclick
。例えば:
$(element).click(function() {
var clickedElement = this;
});
そして、フォーカスされた要素を取得するには、次の:focus
ようなセレクターを使用でき$(':focus')
ます。ドキュメント内のフォーカスされた要素を返します。