13 Stimmen

Jquery Bedingungsprüfung is(':hover') funktioniert nicht

$('.xx').mouseenter(function(){
  if($(this).is(':hover'))
    alert('d');
  else
     alert('f');
});

Hier ist mein Code, er sollte 'd' melden, aber jedes Mal meldet er 'f' Was ist hier der Fehler?

33voto

mathheadinclouds Punkte 3117
function idIsHovered(id){
    return $("#" + id + ":hover").length > 0;
}

http://jsfiddle.net/mathheadinclouds/V342R/

17voto

Frédéric Hamidi Punkte 249635

:schweben ist ein CSS Pseudoklasse und nicht ein jQuery-Selektor. Er kann nicht zuverlässig verwendet werden mit is() auf allen Browsern.

5voto

Connell Punkte 13255

Wie Frederic sagte, :schweben ist Teil von CSS und ist kein Selektor in jQuery.

Für eine alternative Lösung, lesen Sie Wie prüfe ich, ob sich die Maus über einem Element in jQuery befindet?

Setzen Sie eine Zeitüberschreitung für das Ausblenden der Maus und speichern Sie den Rückgabewert in Daten in dem Objekt. Beim Überfahren mit der Maus wird die Zeitüberschreitung abgebrochen, wenn es einen Wert in den Daten vorhanden ist.

Entfernen Sie die Daten beim Rückruf der Ausblendung.

2voto

rogerlsmith Punkte 6492

Versuchen Sie Folgendes.

$('.xx').hover(function(){        
        alert('d');
    }, function() {
       alert('f);
    });

2voto

l00k Punkte 1425
x.filter(':hover').length

Dies kann auch verwendet werden, wenn Sie bereits einige Objekte / oder innerhalb einer Callback-Funktion abgefragt haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X