d3.js - D3js : ":last is not a valid selector"?

标签 d3.js

d3.select('.activity:last')d3.selectAll('.activity:last') 均失败。同时; $('.activity:last') 有效。

d3.selectAll('.activity:last')
  .append('<div class="hook-table">Table comes here</div>');
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
<div class="container">
  <div class="activity"></div>
  <div class="activity"></div>
  <div class="activity"></div>
  <div class="activity"></div>
  <div class="activity"></div>
</div>

是否有 D3 方法来传递 :last 选择器。

最佳答案

:last 不是有效的 css 选择器。它可以与 jQuery 一起使用,因为 jquery 添加了对此选择器的支持:

:last is a jQuery extension and not part of the CSS specification (docs)

由于 D3 仅考虑有效的 CSS 选择器字符串,因此 :last 不适用于 D3。

相反,您需要更多代码才能获取最后一个元素。

如果您的 div 是其同级中的最后一个,那么您可以使用 :last-child:

d3.select(".container").select(".activity:last-child")
  .text("5: This div selected");
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>


<div class="container">
  <div class="activity"><p>1</p></div>
  <div class="activity"><p>2</p></div>
  <div class="activity"><p>3</p></div>
  <div class="activity"><p>4</p></div>
  <div class="activity"><p>5</p></div>
</div>

但是,如果最后一个 div 下面还有另一个元素,这将不起作用。上面将选择类为“activity”的 div,它是 .container 的最后一个子级(请参阅 MDN )。

对于更复杂的结构,其中最后一个带有“activity”类的 div 或元素不是最后一个同级元素,您需要采取更复杂的方法。

关于d3.js - D3js : ":last is not a valid selector"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55814163/

相关文章:

javascript - d3.v3散点图,所有圆的半径相同

python - 127.0.0.1 拒绝连接

javascript - 将链接添加到 D3 生成的表

d3.js - 如何在强制布局中拖动时将 svg 元素对齐到网格

javascript - selectAll() 之后的 D3 filter()

javascript - d3 范围/域返回负值?

d3.js - d3 过滤器选择不起作用?

d3.js - 如何获得 D3 中的比例类型?

javascript - 在鼠标悬停事件上向 d3 饼图添加更多文本

javascript - 类型 'transition' 上不存在属性 'Selection<BaseType, {}, null, undefined>'