Бих искал да променя състоянието на текстов възелкогато е натиснат, но очевидно не успявам да го достигна правилно. Когато щракнете, нищо не се случва (освен ако не използвам селектора на 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 за отговор № 1Оказва се 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","");
}
});