[英]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.