javascript - 如何将 svg 图像附加到另一个 svg 图像的 rect 元素?

标签 javascript svg d3.js

我试图将 svg 图像附加到 rect svg 图像中的元素,使用 d3 并尝试

chart.selectAll("rect.bar")
  .each(function(datum, index) {
    d3.select(this)
      .append("svg:image")
        // ..some attributes
  });

这增加了 <image>到dom,但图像不显示。我也试过使用 jquery 来选择 this.each block ,将其添加到 dom,但也不显示。

对于 jquery,我添加了它

$(this).after("<svg:image xlink:href='/images/image.svg' x='20' y='20' width='20' height='20'/>");

svgxlink html 中的命名空间元素

<html lang="en" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">

我已经能够为每个 rect.bar 创建一个图像与 .selectAll , 但我想根据 datum 创建更多值(value)。

最佳答案

我需要使用 jquery 来选择父元素,这样图像就不会被放在 inside rect.bar 元素中,而是放在它旁边。代码在这里:

chart.selectAll("rect.bar")
  .each(function(datum, index) {
    var rectBar = $(this).parent()[0]; // Needs parent object, otherwise it will append inside rect
    var num = 4;

    for (var i = 0; i < num; i++) {
      d3.select(rectBar)
        .append("svg:image")
          // ...some attributes
    }
  });

.parent() 本身也不起作用。我需要明确地执行 .parent()[0]。不知道为什么。

关于javascript - 如何将 svg 图像附加到另一个 svg 图像的 rect 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10337375/

相关文章:

javascript - 带有开始圆的 SVG 进度条动画

javascript - 从 d3.js timeFormat 中删除前导零

javascript - 对象属性为 null,但输入的值不是 null。如何正确插入值?

javascript - Vue js v-repeat 不显示任何内容

javascript - 从 PhoneGap JavaScript 访问 Android 上的 Content Provider

javascript - jQuery函数计算错误

D3.js 在鼠标悬停事件上获取形状的数据索引

javascript - 使用 jQuery 在选择列表上进行验证

javascript - 在 D3.js 中不渲染图形的情况下更改 Node 的标签数据

javascript - 使用服务器上的 svg 生成器更改 img 的 src 属性不会触发 HTTP 请求