2010-04-02 1 views
0

내림차순 정렬되지 않은 목록의 트리 메뉴를 맨 위로 돌아가려면 < li> jquery의 토글 기능을 사용하여 "p_node"속성을 검색하십시오. 예를 들어 "Annie"를 클릭하면 "mCat1"이라는 루트 li을 검색하고 스크립트에서 사용할 "p_node"의 값을 추출합니다. 이것을 어떻게 할 수 있습니까? 당신의 도움을 주셔서 감사합니다.jquery - 정렬되지 않은 목록에 깊이 중첩되어있는 경우 루트 또는 상위 항목의 속성을 어떻게 얻습니까?

<ul id="nav> 
    <li type="root" p_node="39">Cat 2 
    <ul> 
     <li><a>sub cat2</a></li> 
    </ul> 
    </li> 
    <li type="root" p_node="40">mCat1 
     <ul> 
     <li>Subcat A 
      <ul> 
       <li>Subcat A.1 
        <ul> 
        <li><a>Annie</a></li> 
        </ul> 
       </li> 
      </ul> 
      </li> 
     </ul> 
    </li> 
</ul> 

가 여기에 내가 노력했습니다 JQuery와 일부입니다 :

다음은 정렬되지 않은 목록입니다.

$('#nav li:not(:has(li))>a').toggle(function() { 
        //show stuff 
        var parentEls = $(this).parents() 
        .map(function() { 
        if($(this).attr('type') == 'root') 
        { 
        var node = $(this).attr('p_node'); 
        return node; 
        } 
      }); 
      }, function() { 
        //close stuff 
}); 

답변

4

이 시도 : 셀렉터 앵커 태그가 바닥 가장 < li>로 선택하는 것입니다

$(clickReceiver).parents("li:last").attr('p_node') 
+0

브릴리언트! 완벽하게 작동합니다. 도와 줘서 고마워. – Ronedog

+0

jquery가 좋지 않습니까? :) – morgancodes

+0

jQ 선택기 *는 훌륭합니다. 그들은 DOM의 모든 요소 사이에 일종의 "분리 정도"를 만들어 냈습니다. – dclowd9901

2
$('#nav li:not(:has(li))>a').toggle(function() { 
    //show stuff 
    var parentEls = $(this).closest('li[type=root]').attr('p_node'); 
}, function() { 
    //close stuff 
}); 
+0

이것은 다소 밀도가 높습니다. 여기서 무슨 일이 일어 났는지 설명하면 도움이 될 것입니다. – Sorpigal

+1

밀도가 높지는 않지만 질문의 코드를 사용하여 대답을 제공하려고합니다. 중요한 부분을 추출하면,이 답변은 근본적으로 부모 대신에 가장 가까운 이름을 사용하고 특히'type = root' -'$ (clickReceiver) .closest (' li [type = root] '). attr ('p_node ');' – Mottie

+0

감사합니다 pertersendidit. 이것 역시 훌륭했습니다 ... 도와 주셔서 감사합니다. – Ronedog