2012-09-28 4 views
1

나는 다음과 유사한 UL> 리 구조가 있습니다jQuery를 스캔 UL 구조

<ul id="node"> 
    <li><a data-name="One">One</a> 
     <ul> 
      <li><a data-name="Two">Two</a></li> 
      <li><a class="me" data-name="Three">Three</a> 
       <ul> 
        <li><a data-name="Four">Four</a></li> 
        <li><a class="me" data-name="Five">Five</a></li> 
       </ul> 
      </li> 
     </ul> 
    </li> 
</ul> 

내 필요성이를 통과하고 각 <a> 요소의 데이터-name 속성을 잡아하는 것입니다 배열 초래 클래스 나 :

items = {"Three","Five"} 

NEW ISSUE :

만약에 I Three부터 시작하여 data-name 속성이 건너 뛴다는 것을 알고 Three인데 그곳으로 건너 뜁니다. 즉, 결과는 Five입니까?

답변

2
var items = $('ul#node a.me').map(function(){ 
    return $(this).attr('data-name'); 
}); 

또는

var items = []; 
$('ul#node a.me').each(function(){ 
    items.push($(this).data('name')); 
}); 

DEMO

NEW ISSUE :

var items = []; 
$('ul#node a[data-name="Three"]').parent().children().find('a.me').each(function(){ 
    items.push($(this).data('name')); 
}); 

그리고 the new Demo ...

+1

나는 $ (이) .DATA ("이름") – aquinas

+0

@aquinas 좋은 포인트를 사용합니다. 나는 속성의 이름에주의를 기울이지 않았다 ... –

1

map 방법을 사용할 수 있습니다.

var items = $('ul a.me').map(function(){ 
    return this.dataset.name 
}).get() 

http://jsfiddle.net/ZGMSw/

+0

+1 items.get()을 호출하여 * 실제 * 배열을 가져 오는 것을 잊지 마라. – aquinas

+0

@aquinas 고마워, 나는 그것을 놓쳤다. – undefined

0
$('a.me').each (function() { alert ($(this).attr('data-name')); });