的jsfiddle:http://jsfiddle.net/kKvtJ/5/無法再利用的轉變
我有一個g
其修改每個g
中的幾個要素的點擊轉換。 jsfiddle應該說清楚。點擊10
,然後11
,然後8
,看看它是如何轉換的。
nodes_enter.on('click', function(d, i) {
var all_transition = d3.selectAll('g.bar').transition().duration(500);
var this_transition = d3.select(this).transition().duration(500);
all_transition.select('line').attr('opacity',0);
all_transition.select('text').style('fill','white').attr('x',0);
this_transition.select('line').attr('opacity',1);
this_transition.select('text').style('fill','black').attr('x',40);
// works
d3.selectAll('g.bar').transition().duration(500)
// doesn't work
// all_transition
.attr('transform', function (e, j) {
return 'translate(' + (j * 30 + (j > i ? 30 : 0)) + ',0)'
});
});
這工作得很好。
但是,如果我將最後一個轉換的選擇器更改爲all_transition
,則在從左向右單擊組時它無法正常工作。很奇怪。
如果我在console.log
範圍內進行變換,它將顯示每個組的正確座標。瀏覽器不會重新呈現更新的轉換。
我做錯了什麼?是否有一個更可接受的方式來重新使用.transition().duration(500)
,還是我必須複製/粘貼每次使用它?我認爲我可以在組上實例化轉換/持續時間,然後通過子轉義器重複使用它。 每個元素我想轉換是否很昂貴?
你怎麼沒有現在的灰泥板徽章?非常感謝,有一個徽章:) –