Ich stoße auf unerwünschtes Verhalten, wenn ich JQuerys $.on("click", function(){});
on-Touch-Geräte verwende. Dies ist mein Code unten:JQuery .on ("Klick") löst "Mouseover" auf Touch-Gerät aus
Code:
$(".team").on("mouseover", teamMouseOver);
$(".team").on("mouseout", teamMouseOut);
$(".team").on("click", teamThumbClicked);
function teamMouseOver(event){
console.log(event.type);
}
function teamMouseOut(event){
// Do something
}
function teamThumbClicked(event){
console.log("Clicked!");
}
Problem:
Mit dem obigen Code, löst gleichzeitig beiden Zuhörer auf einem Touch-Gerät auf ein .team
Element tippen, mir geben das folgende Konsolenprotokoll:
mouseover
Clicked!
Frage Warum wird mouseover
auf einem Touch-Gerät ausgelöst? Dies ist nicht das Verhalten, das ich von einem Gerät ohne Maus erwarten würde. Ist das ein Fehler? Welches Ereignis sollte ich verwenden, damit "Mouseover" nur ausgelöst wird, wenn ein tatsächlicher Mauszeiger eingeht?
Meine JQuery-Version ist 2.2.4.
** [Dies kann hilfreich sein] (http://stackoverflow.com/a/12187105/2065039) ** –
Dies ist das korrekte Verhalten. Was versuchst du zu erreichen? Ich bin kürzlich auf das gleiche Problem gestoßen (unerwünschte Klassen wurden beim mobilen "Klick" hinzugefügt) und konnten das Problem mithilfe der CSS-Spezifität lösen: https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity – Mussser
Ich zeige einen Tooltip auf 'mouseover' und ich verstecke ihn auf' click'. Wenn diese beiden Ereignisse gleichzeitig ausgelöst werden, bleibt die QuickInfo sichtbar, wenn sie ausgeblendet werden sollte, weil Sie darauf geklickt haben. Deshalb muss "Mouseover" nicht ausgelöst werden, wenn das Gerät keine Maus hat. Ich dachte, das sind die "Touch" -Ereignisse. Hat JQuery das mit Absicht gemacht, um: Hover-Effekte zu simulieren? – Marquizzo