jQuery: keine chance zu erkennen, von welcher Seite die Maus trat in ein div ohne "Offset" - Methode?
Gibt es eine Möglichkeit zu erkennen, von welcher Seite ein div mit der Maus-cursor kommt?
Derzeit bin ich mit dieser Methode:
jQuery(this).bind('mousemove',function(e){
offset_pos_x = parseInt(e.offsetX);
offset_pos_y = parseInt(e.offsetY);
...
Dann Suche ich mir die Entfernungen, die Maus ging im div, in welche Richtung.
Das Problem ist, diese Methode ist ein wenig buggy, denn ich brauche alle 4 Seiten, nicht nur zwei, so dass ich zu überprüfen, offsetX UND offsetY.
Wenn ich mich bewege die Maus innerhalb des div zum Beispiel X:+15,Y:-3 (in Pixel) weiß ich, dass die Maus kam von Links, da die Maus bewegt 15px auf der x-Achse, aber nur -3px auf der y-Achse. Der buggy Sache über dieses ist, wenn X und Y fast die gleiche und ich weiß nicht, ob die Maus kam von Links oder top (zum Beispiel).
Auch nach meine andere Frage (jQuery: mouseenter/mousemove/mouseover nicht erkannt mit kleinen div und schnelle Mausbewegungen) die Events nicht gefeuert, auf den ersten Pixel des div ' s Seite, da der browser/os-Einschränkungen. Weil, mein "entered_at" - Koordinate ist nicht korrekt - Beispiel:
Wenn ich meine Maus sehr schnell innerhalb des div (von Links), die "entered_at" coord ist bei x:17,y:76 zum Beispiel. Nun, wenn ich meine Maus nach Links nach stoppen der Maus, zum Beispiel x:6,y:76 die Differenz zwischen dem Startpunkt und offsetX negativ ist, also die "cursor kam von rechts" - Funktion ausgelöst wird...
Gibt es einen anderen Weg, um zu erkennen, von welcher Seite die Maus kommt?
Grüße,
Patrick
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde nicht mit dem offset -, sondern pageX/pageY (jQuery normalisiert diese). Wenn der cursor die erste mousemove-Ereignis war näher an den linken Rand als jede andere Kante, kam es von Links. Sie können sich auch mit dem hover-Ereignis für diese, statt mousemove.
JSFiddle, mit freundlicher Genehmigung der jamaikanischen Flagge.
http://jsfiddle.net/MJTkk/1/
hier ist die korrekte/funktionierende Beispiel für das Script, einschließlich das Update für die absolut positionierten divs. Danke nochmal für Eure Hilfe turiyag!
jsfiddle: http://jsfiddle.net/MJTkk/2/
Skript:
Den nächstgelegenen edge-Funktion in der jamaikanischen Flagge fiddle ist nicht so gut, wie es sein könnte und war ungenau für bestimmte Elemente. Wir können
offsetX
undoffsetY
zu simiplify die Funktion und die Beseitigung derdistMetric
Funktion:E. g.:
Hatte ich einige Probleme mit diesem code, wenn Sie auf ein Rechteck, fand ich, dass es falsch identifizieren Sie eine Kante als Recht, wenn sollte es top sein. Ich verbrachte einige Zeit kommen mit einer Antwort und meinte, ich würde zu teilen:
credit: jQuery animation für ein schweben mit 'Maus Richtung"
Hier ein plugin
: https://github.com/JohnnyBeGood34/JQuery-MouseEntrance
hoffe Euch helfen.
Habe ich verbessert @Patrick's Lösung mit jQuery-Funktionen ein, um noch mehr elegante und robuste benutzerdefinierte jQuery-Funktion.
Hier ist die jQuery getMouseSide jsFiddle: