Original (und richtig) Antwort:
Sie können is()
den Selektor verwenden und überprüfen :hover
.
var isHovered = $('#elem').is(":hover"); // returns true or false
Beispiel: http://jsfiddle.net/Meligy/2kyaJ/3/
(Dies funktioniert nur, wenn der Selektor mit EINEM Element übereinstimmt. Weitere Informationen finden Sie unter Bearbeiten 3)
.
Edit 1 (29. Juni 2013): (Gilt nur für jQuery 1.9.x, da es mit 1.10+ funktioniert, siehe nächste Edit 2)
Diese Antwort war zum Zeitpunkt der Beantwortung der Frage die beste Lösung. Dieser ': hover'-Selektor wurde mit der .hover()
Methodenentfernung in jQuery 1.9.x entfernt.
Interessanterweise zeigt eine aktuelle Antwort von "allicarn", dass es möglich ist, :hover
als CSS-Selektor (vs. Sizzle) zu verwenden, wenn Sie ihm einen Selektor voranstellen $($(this).selector + ":hover").length > 0
, und es scheint zu funktionieren!
Auch das in einer anderen Antwort erwähnte hoverIntent- Plugin sieht sehr gut aus.
Edit 2 (21. September 2013): .is(":hover")
funktioniert
Aufgrund eines anderen Kommentars habe ich festgestellt, dass die ursprüngliche Art und Weise, wie ich sie gepostet habe .is(":hover")
, tatsächlich immer noch in jQuery funktioniert.
Es hat in jQuery 1.7.x funktioniert.
In 1.9.1 funktionierte es nicht mehr, als es mir jemand meldete, und wir alle dachten, es hängt damit zusammen, dass jQuery den hover
Alias für die Ereignisbehandlung in dieser Version entfernt.
In jQuery 1.10.1 und 2.0.2 (möglicherweise 2.0.x) hat es wieder funktioniert, was darauf hindeutet, dass der Fehler in 1.9.x ein Fehler war oder kein absichtliches Verhalten, wie wir im vorherigen Punkt gedacht haben.
Wenn Sie dies in einer bestimmten jQuery-Version testen möchten, öffnen Sie einfach das JSFidlle-Beispiel am Anfang dieser Antwort, wechseln Sie zur gewünschten jQuery-Version und klicken Sie auf "Ausführen". Wenn sich die Farbe beim Hover ändert, funktioniert es.
.
Bearbeiten 3 (9. März 2014): Dies funktioniert nur, wenn die jQuery-Sequenz ein einzelnes Element enthält
Wie @Wilmer in den Kommentaren gezeigt hat, hat er eine Geige, die nicht einmal gegen jQuery-Versionen funktioniert, gegen die ich und andere hier getestet haben. Als ich versuchte herauszufinden, was an seinem Fall besonders ist, bemerkte ich, dass er versuchte, mehrere Elemente gleichzeitig zu überprüfen. Das warf Uncaught Error: Syntax error, unrecognized expression: unsupported pseudo: hover
.
Wenn er also mit seiner Geige arbeitet, funktioniert das NICHT :
var isHovered = !!$('#up, #down').filter(":hover").length;
Während dieser DOES Arbeit:
var isHovered = !!$('#up,#down').
filter(function() { return $(this).is(":hover"); }).length;
Es funktioniert auch mit jQuery-Sequenzen, die ein einzelnes Element enthalten, z. B. wenn der ursprüngliche Selektor nur mit einem Element übereinstimmt oder wenn Sie .first()
die Ergebnisse aufgerufen haben usw.
Dies wird auch in meinem JavaScript + Web Dev Tips & Resources Newsletter erwähnt .