0

私はこのHTMLを持っています:

<div class="container">
    <a href="#mylink" tabindex="-1">select this</a>
    <a href="#mylink" tabindex="-1">select this</a>
    <a href="#mylink" tabindex="-1">select this</a>
</div>

<a href="#begin" tabindex="-1">click here to begin selecting</a>

そして、この JS/jQuery コード スニペットがあります。

$('a[href="#begin"]').blur(function(e) {
    console.log( e.target.href ); // this will output: #begin
});

したがって、必要な.blurのは、ぼかした後にどの要素がフォーカスされたかを判断すること<a href="#begin">です。

これは JS/jQuery で可能ですか?

4

3 に答える 3

1

.focus次のような方法を使用して、どの要素がフォーカスを取得するかを確認できます。.blur

ぼかしイベント中に、次のコントロールフォーカスを「監視」するフラグを設定できます。フォーカス機能では、このフラグが設定されている場合、「存在」フィールドが最後にフォーカスを失ったことがわかります。ただし、他のフィールドがぼやけている場合は、フラグをリセットする必要があります。

これが簡単な概念の例です...

var beginWasLast = false;

$('a[href="#begin"]').blur(function(e) {
    e.preventDefault();
    beginWasLast = true;
    console.log( e.target.href ); // this will output: #begin
});

$('a[href="#begin"]').click(function(e) {
    e.preventDefault();
});

$('a:not(a[href="#begin"])').blur(function(e) {
    e.preventDefault();
    beginWasLast = false;
});

$('a:not(a[href="#begin"])').click(function(e) {
    e.preventDefault();
    if(beginWasLast){
        console.log( e.target.href );
    }
});

これが実際の例です

e.preventDefault();リンクがクリックされたときにページがリロードされないように、呼び出しを追加しました。

于 2013-01-07T10:20:13.273 に答える
1

blurイベント自体からどの要素がフォーカスされたかを知ることはできません。これを取得するには、次のようにクリックイベントを追加する必要があります。

$('a[href="#begin"]')
    .blur(function(e) {
        console.log( e.target.href ); // previous link href
    });
    .click(function(e) {
        console.log( e.target.href ); // current link href
    });
于 2013-01-07T10:20:17.940 に答える
1

別の可能な方法は次のとおりです。 デモを見る

$('a[href="#begin"]').blur(function(e) {
  setTimeout(function(){console.log( $(document.activeElement).attr('href') );},0); 
});
于 2013-01-07T11:06:14.323 に答える