javascript - 如何更新d3中的子元素?

标签 javascript d3.js

我想绘制节点(用于强制布局,但在这个问题中我只留下节点,以最小化代码),这些节点具有位置、颜色、文本等属性,并使用 g 中的多个元素绘制。 。

我正在尝试实现“常规更新模式”,这就是我所拥有的:

var update = function(data) {
    var nodes = svg.selectAll('g').data(data);

    var nodeenter = nodes.enter().append('g')

    // append + update
    nodes.attr('transform', function(d, i) {
            return 'translate(' +
                (radius + i * radius * 2) + ',' +
                (height / 2 + d.height)
            +')';
        });

    // append
    nodeenter.append('circle')
        .attr('r', radius)
        .style('fill', function (d) { return d.color; });
    nodeenter.append('text')
        .text(function (d) { return d.text });

    // remove
    nodes.exit().remove();
};

它更新组transform属性,它添加和删除带有子元素的节点,但如何更新子元素内的属性,例如 fill circle的,和"text"text

这是包含所有代码的 JSFiddle,它说明了问题:http://jsfiddle.net/2kqLC/2/

最佳答案

只需在初始更新选择上创建一个新的子选择并编辑其属性即可。

nodes.select('text').text(function (d) { return d.text });
nodes.select('circle').style('fill', function (d) { return d.color; });

jsfiddle.net/2kqLC/3

关于javascript - 如何更新d3中的子元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24802227/

相关文章:

javascript - 将属性传递给 Jquery 中的 Append 函数不起作用

javascript - 第一次尝试无法登录

javascript - 我正在尝试使用 NVD3 重现示例,但不起作用

javascript - 如何自定义 d3.js 中的某些文本?

javascript - dimple.js 中图表的响应式大小调整不起作用

d3.js - dc.js 带复选框的多选菜单

javascript - 使用 Javascript 隐藏具有淡出效果的 Bootstrap 模态

javascript - 本地 Javascript 和 CDN 优先级

javascript - 为特定最终用户修改 TasksByKanbanState.html 集会脚本

javascript - android 2.3 上的 d3.js 可视化