2013-07-21 129 views
2

我想修改一個文本節點的狀態,當它被點擊時,但顯然我無法正確訪問它。當我點擊,沒有任何反應(除非我使用jquery選擇器,而不是所有的命令工作)。 所以我的問題是:什麼是相當於$(this)的d3.js?

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'); 
    } 
     }); 

回答

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',''); 
    } 
});