2

我想在单击文本节点时修改它的状态,但显然我无法正确访问它。当我单击时,什么也没有发生(除非我使用 jquery 选择器,并且并非所有命令都有效)。所以我的问题是:d3.js 相当于 $(this) 是什么?

var buttons = svg.selectAll(".button");
buttons.on("click",function(d){
    var target = $(this).attr('target');
    var visible  = $(this).attr('visible');
    if(visible==='1'){
        svg.selectAll(".bar."+target)
                .transition()
                .duration(500)
                .ease("elastic")
                .style('display','none');
    $(this).attr('visible','0')
                .style('text-decoration','line-through');
    }else{
        svg.selectAll(".bar."+target)
                    .transition()
                    .duration(500)
                    .ease("elastic")
                    .style('display','inline');
        $(this).attr('visible','1');
        $(this).removeClass('active');
    }
        });
4

1 回答 1

0

事实证明d3.select(this)是正确的答案。

现在的代码是:

var buttons = svg.selectAll(".button");
buttons.on("click",function(d){
    var target = $(this).attr('target');
    var visible  = $(this).attr('visible');
    if(visible==='1'){
        svg.selectAll(".bar."+target).transition().duration(500).ease("elastic").style('display','none');
        d3.select(this).attr('visible','0').style('text-decoration','line-through');


    }else{
        svg.selectAll(".bar."+target).transition().duration(500).ease("elastic").style('display','inline');
        d3.select(this).attr('visible','1').style('text-decoration','');
    }
});
于 2013-07-21T19:54:23.443 回答