2014-01-21 2 views
0

Я хочу расширить свой dropdownmenu этим скриптом.Как я могу отобразить активный список в dropdownmenu

$(document).ready(function() { 

    $('li.active>ul').css('display','block'); 

    $("ul.parent>li:not(.active)").mouseenter(function(){ 
    $("ul.parent li.active>ul").css("display","none"); 
    }); 

    $("ul.parent>li:not(.active)").mouseleave(function(){ 
    $("ul.parent li.active>ul").css("display","block"); 
    }); 


    $("ul.level-2>li:not(.active)").mouseenter(function(){ 
    $("ul.level-2 li.active>ul").css("display","none"); 
    }); 

    $("ul.level-2>li:not(.active)").mouseleave(function(){ 
    $("ul.level-2 li.active>ul").css("display","block"); 
    }); 


}); 

Это работает, но есть ли более чистые решения, чем это, даже для большего количества уровней?

+0

Вы можете показать нам свою разметку? – DaniP

ответ

1

Возможно, используя hover() - toggle() и parent(), но в зависимости от вашей разметки.

$(document).ready(function() { 
    $('li.active-trail>ul').css('display','block'); 
    $("ul > li:not(.active-trail)").hover(function(){ 
     $(this).parent().find("li.active>ul").toggle(); 
    }); 
}) 
+0

Эй, спасибо за ваш ответ! Это здорово, но этот скрипт работает на верхнем и втором уровнях, но не на 3. Если ула на уровне 3. является «активным» классом, другие списки 3-го уровня перекрывают его. – Bruno

+0

@Bruno Привет, вот почему я говорю, зависит от вашей разметки, можете ли вы показать это? и, возможно, вставьте его в http://jsfidle.net – DaniP

+0

Вот он: http://jsfiddle.net/pF9JJ/ Все в порядке, но на моей тестовой странице я до сих пор получаю ошибку. Когда уровень 3. активен, и я покидаю menupoint, окружаю курсором меню и перехожу с ним сверху вниз в список уровней 3. активный не отображается, но оба списка, у которых нет активного класса, отображаются, когда Теперь я покидаю меню. – Bruno

Смежные вопросы