Hallo molily,
Dort wird vermutlich serverseitig die active-Klasse gesetzt und clientseitig beim mouseenter auf dem aktive Element geprüft, woher die Maus kommt (event.relatedTarget). Du kannst ja in den Quellcode schauen und die genaue Logik untersuchen.
das mit der active-Klasse war ne gute Idee, die hatte ich sowieso schon. RelatedTarget hat mich nicht wirklich weitergebracht, aber ich habs jetzt auch so hinbekommen. Es war mal wieder ein Riesenkrampf, obwohls am Ende dann doch recht banal ist. Falls es jemanden interessiert oder jemand noch Optimierungsvorschläge hat, nachfolgend noch das Script.
Beste Grüße
Onkel Schnitzel
(function() {
function slideNavi() {
var li = $("#mainNavi > ul > li");
var sperre = 0;
var checkAktiv = true;
setTimeout(function() {
checkAktiv = false;
// Das SlideDown muss nur gesperrt werden, wenn die Maus direkt nach dem Laden der Seite wirklich noch über dem aktiv-Feld ist => daher kurze Verzögerung. Vorher wurde gesperrt, obwohl die Maus das aktiv-li schon verlassen hatte.
}, 1000);
li.mouseover(function() {
if ( $(this).hasClass("aktiv") && checkAktiv === true ) {
sperre = 1; // SlideDown sperren
}
});
li.mouseenter(function() {
if (sperre === 0) {
$(this).find("nav").stop( false, false ).slideDown(250);
}
});
li.mouseleave(function() {
sperre = 0;
checkAktiv = false; // Wenn einmal ein li-Element verlassen wurde, muss nicht mehr gesperrt werden
$(this).find("nav").stop( false, false ).slideUp(250);
});
}
$(document).ready(slideNavi);
})();