2013-09-04 3 views
0

중첩되지 않은 목록 (ul)이있는 메뉴가 있고 상위 항목의 인덱스에서 가져온 목록 항목 인덱스가있는 배열이 있습니다. 하지만 jQuery를 사용하여 클래스를 재귀 목록 항목에 추가 할 수는 없습니다. 예를 들어jQuery 재귀 적으로 지정된 인덱스로 요소를 찾습니다.

:

나는 배열 [1,1,0]이이 배열 내 링크 2, 하위 링크 2와 깊은 메뉴 1 링크 포함 항목 목록에 클래스를 추가 할 수 있습니다

<ul> 
    <li><a href="">My Link 1</a></li> 
    <li> 
     <a href="">My Link 2</a> 
     <ul> 
      <li><a href="">Sub Link 1</a></li> 
      <li> 
       <a href="">Sub Link 2</a> 
       <ul> 
        <li><a href="">Deep menu 1</a></li> 
        <li><a href="">Deep menu 2</a></li> 
        <li><a href="">Deep menu 3</a></li> 
       </ul> 
      </li> 
     </ul> 
    </li> 
    <li><a href="">My Link 3</a></li> 
</ul> 

을 내 문제를 설명 할 수 있기를 바랍니다. 영어가 제 모국어가 아니며 모국어로도 문제를 제대로 설명하지 못합니다. 내가 이해 한 바로는

+1

왜 처음 두 목록은 '0'기반이고, 3 단계 수준은 '1'입니까? 그건 그냥 오타예요? 또한 지금까지 시도한 코드를 게시 할 수 있습니까? –

+0

'[2, 2, 1]'또는'[1, 1, 0]'을 의미하지 않습니까? –

+0

오타 배열 미안합니다 [1,1,0] – xuma

답변

0

: 당신은 단지 current.find('a').addClass('yourClass'); 대신 current.addClass(yourClass);의를 수행 <a />로 설정하고 싶은 경우

var current = $('div.parent'), // parent of master ul 
    arr = [1, 1, 0], 
    yourClass = 'myclass'; 

for (var i = 0; i < arr.length; i++) { 
    // we add +1 because nth-child is 1,n based, not 0,n 
    current = current.find('>ul>li:nth-child(' + (arr[i] + 1) + ')'); 
    if (current.length === 0) break; 

    current.addClass(yourClass); 
} 

이것은의 <li /> 태그에 클래스를 추가합니다.

관련 문제