0

階層的な UL / LI リストがある場合、JQuery を使用してルート UL からすべての子孫 LI を取得することは可能ですか?

現在、私は UL.children('li').each(...) 内から再帰を行っています

(function foo($ul) {
    $ul.children("li").each(function () {
        var $li = $(this);
        tabMap[$li.find('a').attr('href')] = $li;
        $li.children("ul").each(function () {
            foo($(this));
        });
    });
})($ul);

これはうまくいきますが、これを一度に行うことができればいいと思います。

また、親以外でも同じことはできますか?たとえば、別の LI からタイプ LI のすべての親、祖父母、祖父母* を見つけますか?

4

2 に答える 2

1

ルート リスト内のリスト項目の直接の子であるアンカー リンクのすべての href を収集するには、ルートから開始し、そのようなリンクをすべて見つけてから、それらをマップに配置し、それらを親に関連付けます。

var tabMap = {};
$("ul#root").find("li > a").each(function() {
    var link = $(this).attr("href");
    var $li = $(this).parent("li");
    tabMap[link] = $li;
});

への呼び出しのフィルター パラメーターはparent必須ではありませんが、そこに何があると期待しているかを明確にするのに役立ちます。さらにul#root、ID が一意であるため、過度に具体的です。ここに ul を追加したのは、これが最上位のリストであることを明確にするためであり、HTML に基づいてその要素に正しいものを配置する必要があります。

于 2013-08-17T00:45:43.217 に答える