2013-11-28 58 views
0

我想將背景添加到活動菜單。所以如果我點擊第一級我得到的背景,但是當我點擊第二級時,第一級背景隱藏,我想保持這個顯示。將背景添加到3級手風琴菜單

這裏是我的代碼

$('.sidenav li:has(ul)').addClass("has-sub"); 
$('.sidenav').find('.has-sub').find('a:first').addClass("sub"); 
$('.sidenav ul ul').addClass("sub-menu"); 
$(".sub-menu").hide(); 

$('.sidenav li a').click(function() { 
    var checkElement = $(this).next(); 

    $('.sidenav li').removeClass('active'); 
    $(this).closest('li').addClass('active'); 

    if ((checkElement.is('ul')) && (checkElement.is(':visible'))) { 
     $(this).closest('li').removeClass('active'); 
     checkElement.slideUp('normal'); 
     return false; 
    } 

    if ((checkElement.is('ul')) && (!checkElement.is(':visible'))) { 
     $('.sidenav ul:visible').not(checkElement.parentsUntil('.sidenav')).slideUp('normal'); 
     checkElement.slideDown('normal'); 
     return false; 
    } 
}); 

,這裏是鏈接JSfiddle

也許有人可以提供幫助。由於

回答

1

只需補充一點:

$(this).parentsUntil(".sidenav").addClass('active'); 

,而不是

$(this).closest('li').addClass('active'); 

Fiddle here

+0

這將增加類活動的所有家長,包括導航,以及身體和其它包裝 – Huangism

+0

呀,會回到以前的答案。 –

+0

你試過這個嗎? http://jsfiddle.net/ru7ge/6/如果你點擊最內在的孩子,它會從最高的li刪除紅色 – Huangism

0

您可以檢查你點擊

if($(this).parent().hasClass('top')) { 
    $('.sidenav li').removeClass('active'); 
} else { 
    $('.sidenav li:not(.top)').removeClass('active'); 
} 

該項目,加入頂級的頂級項目

<li class="top"><a href="#">Research Units</a>.... 

http://jsfiddle.net/ru7ge/5/