2016-03-30 21 views
0

Der folgende Code funktioniert gut, aber ich möchte die Art ändern, wie die Untermenüs nach oben verschoben werden: Anstatt auf das übergeordnete Element zu klicken, würde ich gerne die Untermenüs nach oben schieben ist aus alle Elemente jedes Untermenüjquery slideUp wenn mouse out

function initMenu() { 
    $('#menu ul, #top-menu ul').hide(); 
    $('#menu ul, #top-menu ul').children('.current').parent().show(); 
    $('#menu li a,#top-menu li a').click(
    function() { 
    var checkElement = $(this).next(); 
    if((checkElement.is('ul')) && (!checkElement.is(':visible'))) { 
     checkElement.slideDown('normal'); 
     return false; 
    } 
    if((checkElement.is('ul')) && (checkElement.is(':visible'))) { 
     checkElement.slideUp('normal'); 
     return false; 
    } 
    } 
); 
+0

http://stackoverflow.com/a/36305541/4763793 –

Antwort

0

Verwendung hover Methode. Sie brauchen nicht zu prüfen, ob Element sichtbar ist oder nicht auf diese Weise:

$('#menu li a,#top-menu li a').hover(function(){ 
    $(this).next().slideDown('normal'); //on mouse over 
}, function(){ 
    $(this).next().slideUp('normal'); //on mouse out 
}); 
+0

Danke. Das funktioniert auch gut und ist eine viel sauberere Lösung. Das Problem besteht darin, dass das Untermenü sichtbar bleiben sollte, während die untergeordneten Elemente in der Schwebe gehalten werden. Auf diese Weise wird es beim Schweben von Kindelementen nach oben geschoben, und das ist mein Hauptproblem. – Marsupio

+0

Sie müssen eine andere Frage stellen oder relevante Frage suchen, die Sie die Antwort erhalten würden. –

+0

Ich habe auch für jemanden geantwortet. Aber ich bin beschäftigt, kann dieses Mal nicht richtig schreiben. –

0
$('#menu li a,#top-menu li a').mouseover(function(){ 
    $(this).next().slideDown('normal'); 
}).mouseout(function(){ 
    $(this).next().slideUp('normal'); 
}); 

mouseover

mouseout