javascript – D3将HTML附加到节点

前端之家收集整理的这篇文章主要介绍了javascript – D3将HTML附加到节点前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经寻找答案,但是没有一个类似的问题帮助我在我的情况.我有一个D3树,在运行时创建新的节点.当我将鼠标悬停在该特定节点上时,我想添加 HTML(所以我可以格式化)到一个节点.现在我可以添加HTML而不是格式化.请帮忙!

JSFiddle:http://jsfiddle.net/Srx7z/

JS代码

var width = 960,height = 500;

    var tree = d3.layout.tree()
            .size([width - 20,height - 60]);

    var root = {},nodes = tree(root);

    root.parent = root;
    root.px = root.x;
    root.py = root.y;

    var diagonal = d3.svg.diagonal();

    var svg = d3.select("body").append("svg")
            .attr("width",width)
            .attr("height",height)
            .append("g")
            .attr("transform","translate(-30,40)");

    var node = svg.selectAll(".node"),link = svg.selectAll(".link");

    var duration = 750;

    $("#submit_button").click(function() {
        update();
    });
    function update() {
        if (nodes.length >= 500) return clearInterval(timer);

        // Add a new node to a random parent.
        var n = {id: nodes.length},p = nodes[Math.random() * nodes.length | 0];
        if (p.children) p.children.push(n); else p.children = [n];
        nodes.push(n);

        // Recompute the layout and data join.
        node = node.data(tree.nodes(root),function (d) {
            return d.id;
        });
        link = link.data(tree.links(nodes),function (d) {
            return d.source.id + "-" + d.target.id;
        });

        // Add entering nodes in the parent’s old position.
        var gelement = node.enter().append("g");

        gelement.append("circle")
                .attr("class","node")
                .attr("r",20)
                .attr("cx",function (d) {
                    return d.parent.px;
                })
                .attr("cy",function (d) {
                    return d.parent.py;
                });

        // Add entering links in the parent’s old position.
        link.enter().insert("path",".g.node")
                .attr("class","link")
                .attr("d",function (d) {
                    var o = {x: d.source.px,y: d.source.py};
                    return diagonal({source: o,target: o});
                })
                .attr('pointer-events','none');

        node.on("mouSEOver",function (d) {
            var g = d3.select(this);
            g.append("text").html('First Line <br> Second Line')
            .classed('info',true)
            .attr("x",function (d) {
                return (d.x+20);
            })
            .attr("y",function (d) {
                return (d.y);
            })
            .attr('pointer-events','none');


        });

        node.on("mouSEOut",function (d) {
            d3.select(this).select('text.info').remove();
        });


        // Transition nodes and links to their new positions.
        var t = svg.transition()
                .duration(duration);

        t.selectAll(".link")
                .attr("d",diagonal);

        t.selectAll(".node")
                .attr("cx",function (d) {
                    return d.px = d.x;
                })
                .attr("cy",function (d) {
                    return d.py = d.y;
                });
    }

解决方法

使用Lars Kotthoff的出色方向,我得到它的工作,所以我决定发布给别人和我自己的参考:

http://jsfiddle.net/FV4rL/2/

附加以下代码

node.on("mouSEOver",function (d) {
            var g = d3.select(this); // The node
            var div = d3.select("body").append("div")
                    .attr('pointer-events','none')
                    .attr("class","tooltip")
                    .style("opacity",1)
                    .html("FIRST LINE <br> SECOND LINE")
                    .style("left",(d.x + 50 + "px"))
                    .style("top",(d.y +"px"));
});

猜你在找的JavaScript相关文章