Ich habe ein ziemlich einfaches Hover-Menü, und ich versuche herauszufinden, wie man mit Timing umgehen.Verzögerung jQuery mouseleave oder toggleClass
Ziel ist es, das Ereignis mouseleave
um 500 zu verzögern und/oder nicht auf schnelle Pässe über andere Menüelemente zu reagieren.
Die Grundfunktion:
$('.button').on({
mouseenter: function() {
$(this).children('.menu').addClass('open');
},
mouseleave: function() {
$(this).children('.menu').removeClass('open');
},
});
Das Hauptproblem dabei ist, der Pixel Spalt zwischen dem Knopf und Menü - wenn ein Benutzer mit der Maus auf das Menü bewegt sich dann, die auslöst, die mouseleave
Funktion.
Ein zweites Ärgernis ist, wenn die Maus schnell über Geschwister-Tasten übergeben sie auch ihre mouseenter
Funktionen auslösen.
ich auch versucht, aber keine Reaktion ...
mouseleave: function() {
setTimeout(function() {
$(this).children('.menu').removeClass('open');
}, 500);},
});
und ich habe auch versucht,
mit.delay(500).queue(function(){
$(this).removeClass("open").dequeue();
aber es scheint mir unsicher.
console.log($.ui.version)
druckt 1.11.4
Danke Paul Roub, perfekte Lösung und Präsentation! – petergus