繁体   English   中英

jQuery选择ul中的所有后代li?

[英]JQuery select all decendant li in ul?

如果我具有分层的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类型的所有父母,祖父母,祖父母*?

您可以使用.find()获取所有后代UL元素:

$ul.find("li")

您可以使用.parents()获取所有祖先:

$li.parents("li");

您可以在此处找到所有jQuery树遍历方法。

要收集锚链接的所有href链接,它们是某个根列表中列表项的直接子代,请从根开始,找到所有此类链接,然后将其放在地图中并将其与父级关联。

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

请注意,对parent对象的调用中的filter参数不是必需的,但它可以帮助您清楚地知道您期望在那里找到什么。 另外,由于ID是唯一的,因此ul#root过于具体。 我只是在此处添加了ul,以使这很明显是您的顶级列表,并且您应该根据HTML为该元素添加正确的名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM