jQuery MouseEnter und MouseOut-events mit .toggle() umkehren, wenn sich die Maus bereits über das element onLoad?
Ich habe ein dropdown-Menü arbeitet Super mit dem folgenden code:
$('#menu ul li').mouseenter(function(){
$(this).children(".dropdown").toggle();
}).mouseleave(function(){
$(this).children(".dropdown").toggle();
});
Diese funktioniert wie man es erwarten würde. Das Problem ist, dass wenn die Maus schon mouseenter
auf die $('#menu ul li')
wenn die $(document).ready(function(){ })
ausgelöst wird, wird der toggle-Umgekehrt funktioniert?
Wie kann ich diese vermeiden?
InformationsquelleAutor tarnfeld | 2010-02-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
wollen Sie nicht zu tun
show()
aufmouseenter
undhide()
aufmouseleave
?dies war tatsächlich korrekt, ich habe gerade realisiert, dass ich sah immer wieder ob es geklappt hat und vergessen hat zu laden! 😐 ty 🙂
InformationsquelleAutor Brandon Henry
Statt nur mitzugehen
toggle
ohne Argumente, Ihre Maus-event-Handler übergeben können, explicit booleanshowOrHide
Werte. Passtrue
zutoggle()
immouseenter
routine, undfalse
immouseleave
. Oder wie vorgeschlagen, durch die andere Antwort, und nutzen Sie einfachshow
undhide
.InformationsquelleAutor Pointy
Wenn Sie laden Sie das Dokument, ohne die Maus zu bewegen, keine mouseover-Aktion ein-und ausgeschaltet werden, bis Sie die Maus bewegen. Aber ich denke, mouseover wird umgeschaltet, wie die Maus bewegt, Ereignis, wenn es schon "über" onLoad".
Was ist mit diesem code ?
Anyways, ich denke, dein Fehler kommt aus dem mouseout nicht ausgeschaltet wird, denn das JS prüft nur alle x ms, und wenn man sich zu schnell bewegt, wird es aus der div ohne Aufruf des Ereignis.
Wenn Sie nicht kümmern, über Animationen, dies mit CSS ist immer ein besserer Weg, dann mit JS.
Werden Sie brauchen, um es einzurichten, wie diese :
CSS:
InformationsquelleAutor Daan