2012-09-28 55 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"} 

新問題:

如果我想要從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

新問題:

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

而且the new Demo ...

+1

我會用$(本)。數據( 「名稱」) – 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()來獲得* actual *數組。 – aquinas

+0

@aquinas謝謝,我錯過了。 – undefined

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