我如何“知道”我在D3树中单击的位置,每个节点有几个标签

时间:2019-01-10 13:30:23

标签: javascript d3.js svg

我正在用D3树制作orgchart。在每个节点中,我都有几个ID。我想单击我的ID并在弹出窗口中获取此ID。到目前为止,当我单击节点的一个ID时,可以获得所有节点的ID。 确切地说,我使用的JSON中存储了我所有的ID,而显示所有节点的ID的方式是:

.on('click', function () {
    window.alert(d.data.id);
})

所以我想我需要一个X变量来知道我要单击的ID并显示为:

.on('click', function () {
    window.alert(d.data.id[X]);
})

问题是,如何获得X,或者有更好的方法来实现(我不太了解js)

我真的很坚持,谢谢您的阅读。

编辑:为清楚起见,我添加了更多代码:

    nodeEnter.append('text').each(function (d) {
    var j = 0;
    while (d.data.id[j] && d.data.id[j] != "") {
        d3.select(this)
            .style("fill", "black")
            .style("text-anchor", "middle")
            .attr('cursor', 'pointer')
            .on('click', function () {
                alert(d.data.id[j]);
            })
            .append('tspan')
            .text(d.data.id[j])
            .append('tspan')
            .text(d.data.label[j]);
            j++;
    }
})

id是JSON中ID的数组。每个节点包含一个ID数组。因此,我需要将“ j”和我写的东西(id和标签)绑定在一起。

1 个答案:

答案 0 :(得分:0)

有更好的方法

将隐藏的HTML字段添加到每个节点,然后单击以找到该字段并获取其值

.on('click', function () {
    alert($(this).find("[type=hidden]").val());
})