1

我有一个类似于以下的 ul>li 结构:

<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>使用类 me 从每个元素中获取 data-name 属性,这将产生一个数组:

items = {"Three","Five"}

新问题:

如果我想从那里开始Three,只知道data-name要遍历的属性是Three并且只从那里向下遍历——即结果只会是Five

4

3 回答 3

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'));
});

演示

新问题 :

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

新的演示......

于 2012-09-28T15:05:39.763 回答
1

你可以使用map方法。

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

http://jsfiddle.net/ZGMSw/

于 2012-09-28T15:08:36.983 回答
0
$('a.me').each (function () { alert ( $(this).attr('data-name')); } );
于 2012-09-28T15:09:31.503 回答