jQuery扫描具有特定类的所有项目的UL结构

时间:2012-09-28 15:04:25

标签: jquery traversal

我有一个类似于以下的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>

我需要遍历这个并使用类me从每个<a>元素中获取data-name属性,这会产生一个数组:

items = {"Three","Five"}

新问题:

如果我想从Three开始,只知道要遍历的data-name属性是Three并且仅从那里向下遍历 - 即结果只是{{} 1}}?

3 个答案:

答案 0 :(得分: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 :(得分:1)

您可以使用map方法。

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

http://jsfiddle.net/ZGMSw/

答案 2 :(得分:0)

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