d3.js相当于$(this)

时间:2013-07-21 19:48:19

标签: jquery d3.js

我想在单击时修改文本节点的状态,但显然我无法正确访问它。当我点击时,没有任何反应(除非我使用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');
    }
        });

1 个答案:

答案 0 :(得分: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','');
    }
});