5

如果我想根据元素的子节点的存在来过滤元素,我将如何做到这一点d3.js

例如在这个 html 结构中,我将如何选择<li>具有子元素的<a>元素?

<ul>
    <li><a href="#">Link 1</a></li>
    <li>Bullet</li>
    <li><a href="#">Link 2</a></li>
    <li><a href="#">Link 3</a></li>
    <li>Bullet</li>
</ul>

对于那些不知道的人,问和回答你自己的问题是完全可以的......

4

2 回答 2

3

使用filter()功能:

var ul = d3.select("ul");
var lis = ul.selectAll("li").filter(function() {
    return ! d3.select(this).select("a").empty();
});
于 2012-06-25T20:13:30.833 回答
3

您使用本机 Javascript 冷处理问题:

首先,您可以选择“li”元素内的所有“a”元素:

var childLinks = document.querySelectorall("ul li a");   // Supported By IE8+

然后,您可以为它们中的每一个选择父级:

childLinks[0].parentNode

本机方法应该更快。

于 2013-11-08T13:02:30.250 回答