2010-08-14 3 views
1

나는 다음과 같은 UL 설정을 가지고 :정렬되지 않은 목록의 상위 클래스를 설정하는 방법

 <div id="sidebar"> 
     <ul id="themenu" class="sf-menu sf-vertical"> 

      <li> 
       <a class="sf-with-ul topm" href="#">Musical Instruments</a> 
       <ul class="bullet"> 
        <li><a href="#">Guitars</a></li> 
        <li><a href="#">Drums</a></li> 
        <li><a href="#">Keyboards</a></li> 
        <li><a href="#">Brass</a></li> 
       </ul> 
      </li> 
     </ul> 
     </div> 

내 질문은, 위뿐만 아니라, 내가 하위 메뉴와 다른 최상위 메뉴가 될 때 최상위 메뉴가 선택되면 "currentMenu"라는 클래스를 기반으로 "녹색"으로 강조 표시됩니다.

내 jQuery는 각 최상위 메뉴가 토글됨에 따라 최상위 메뉴 항목을 "녹색"으로 설정하는 데는 문제가 없지만 사용자가 하위 메뉴 " 드럼 "위의 코드에서"currentMenu "클래스로 설정된 상위 최상위 메뉴가 필요합니다. 이 경우, 최상위 레벨의 "악기"버튼이 설정됩니다.

나는 어떻게해야할지 확신이 없습니다.

$('ul.sf-menu li a').click(function() { 

     if($(this).hasClass('nosub')) { 
      $("ul.sf-menu li ul li a").removeClass("currentSubMenu"); 
     } 
     else { 
      $("ul.sf-menu li a").not(this).removeClass("currentMenu"); 
      $("ul.bullet li a").parent().this.addClass("currentMenu"); 
     } 
    });  

그것은이 라인의 난에 대해 확실하지 않다 :

$("ul.bullet li a").parent().this.addClass("currentMenu"); 

어떤 도움이 좋을 것 내가 좋아하는 뭔가를 시도했다.

감사합니다.

답변

2

아직 100 % 확신 할 수는 없지만 라고 생각합니다. 대신이의 :

$("ul.bullet li a").parent().this.addClass("currentMenu"); 

당신은 이런 식으로, 거기에 도착하는 .closest()를 사용할 수 있습니다

$(this).closest('.sf-menu > li').children('a').addClass('currentMenu'); 

이 당신이 그것을에서의 첫 번째 수준 <li>까지 클릭 링크에서 진행하고는 .currentMenu 적용 그것의 클래스는 <a>입니다.


또는, 당신은 당신이에있어 각 수준에서 적용 .currentClass를 원하는 경우, 당신은이 작업을 수행 할 수 있습니다

$(this).parents('li').children('a').addClass('currentMenu') 
     .end().siblings().children('a').removeClass("currentMenu"); 

You can give it a try here합니다.

+0

감사합니다. Nick - 아직 시도하지 않았지만 기본적으로 내 게시물에 다음 정보를 추가했습니다. "이 경우 최상위 버튼 인"Musical Instruments "가 설정됩니다." – tonyf

+0

@tonsils -이 경우'.closest()'옵션은 여러분이 닮은 것 같아요. –

+0

확실합니다. 그랬어. 도움을 주셔서 감사합니다. – tonyf

관련 문제