2016-03-30 3 views
0

Следующий код работает нормально, но я хотел бы изменить способ создания подменю: вместо того, чтобы щелкнуть родительский элемент для перехода вверх, я хотел бы, чтобы подменю включалось, когда мышь вне всех элементов каждого подменюjQuery slideUp при выводе мыши

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 –

ответ

0

hover Используйте метод. Вам не нужно, чтобы проверить, если элемент виден или не так:

$('#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

Спасибо. Это тоже отлично работает и является более чистым решением. Проблема в том, что подменю должно оставаться видимым при наведении дочерних элементов. Таким образом, он скользит вверх при наведении дочерних элементов, и это моя главная проблема. – Marsupio

+0

Вам нужно задать другой вопрос или найти соответствующий вопрос, на который вы получите ответ. –

+0

Я тоже ответил за кого-то. Но я занят, поэтому на этот раз не могу написать. –

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

mouseover

mouseout