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