Heim >Web-Frontend >js-Tutorial >Wie kann festgestellt werden, ob ein Eingabeelement in jQuery fokussiert ist?

Wie kann festgestellt werden, ob ein Eingabeelement in jQuery fokussiert ist?

Barbara Streisand
Barbara StreisandOriginal
2024-11-21 09:47:141012Durchsuche

How to Determine if an Input Element is Focused in jQuery?

So verwenden Sie jQuery, um festzustellen, ob eine Eingabe fokussiert ist

Auf der Startseite einer Website werden mehrere

Elemente verwenden die CSS-Pseudoklasse :hover, um einen Rahmen anzuzeigen, wenn die Maus darüber fährt. Einer dieser
Elemente enthält ein
das mit der Hilfe von jQuery den Rand beibehält, wenn eines seiner Eingabeelemente den Fokus hat.

Dieses Setup funktioniert einwandfrei, außer in IE6, das :hover auf anderen Elementen als nicht unterstützt. Tags. Um dieses Problem zu beheben, wird jQuery verwendet, um CSS :hover mit der Methode $(#element).hover() nachzuahmen.

Es tritt jedoch ein Problem auf, wenn jQuery sowohl focus() als auch hover() des Formulars verarbeitet. . Wenn ein Eingabeelement den Fokus erhält und der Benutzer die Maus hinein- und herausbewegt, verschwindet der Rahmen.

Um dieses Verhalten zu beheben, sollten Sie die Verwendung einer bedingten Anweisung in Betracht ziehen. Indem beispielsweise überprüft wird, ob Eingaben den Fokus auf Mouse-Out-Ereignisse haben, kann verhindert werden, dass der Rahmen verblasst. Da jQuery keinen :focus-Selektor hat, müssen alternative Ansätze untersucht werden.

jQuery 1.6

jQuery 1.6 führte einen :focus-Selektor ein, sodass keine benutzerdefinierten Implementierungen erforderlich sind. Verwenden Sie einfach:

$("..").is(":focus")

jQuery 1.5 und niedriger

Neuere Methoden sind für den Testfokus entstanden, einschließlich der Implementierung von Ben Alman:

jQuery.expr[':'].focus = function( elem ) {
  return elem === document.activeElement && ( elem.type || elem.href );
};

Dies definiert einen benutzerdefinierten Selektor, der eine Verwendung wie folgt ermöglicht:

if ($("...").is(":focus")) {
  ...
}

Beliebig jQuery-Version

Zum Abrufen des aktuell fokussierten Elements:

$(document.activeElement)

Um die Kompatibilität mit beiden jQuery-Versionen 1.6 und niedriger sicherzustellen:

(function ( $ ) {
    var filters = $.expr[":"];
    if ( !filters.focus ) { 
        filters.focus = function( elem ) {
           return elem === document.activeElement && ( elem.type || elem.href );
        };
    }
})( jQuery );

Das obige ist der detaillierte Inhalt vonWie kann festgestellt werden, ob ein Eingabeelement in jQuery fokussiert ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn