だからあなたはそうのように、クリックでリスナーを置くことができます。
d3.select(element).on('click', function(d) {
centerNode(d);
});
は、その後、あなたは一例につきとしてあなたcenterNode関数を定義することができますでしょうが、少なくとも中央
function centerNode(source) {
var x = -source.y0/2;
d3.select('g').transition()
.duration(400)
.attr('transform', 'translate(' + x + ',' + 0 + ')');
}
を水平に。また、垂直にセンタリングする場合は、source.x0プロパティを使用し、translate関数の2番目のパラメータとして使用する必要があります。
var y = node.__data__.x;
var x = node.__data__.y;
var contentElement = $("#content-area").get(0);
var clientWidth = contentElement.clientWidth;
var clientHeight = contentElement.clientHeight;
var scrollWidth = contentElement.scrollWidth;
var scrollHeight = contentElement.scrollHeight;
var scrollX = ((x/svgWidth) * scrollWidth) - (clientWidth/2) ;
var scrollY = ((y/svgHeight) * scrollHeight) - (clientHeight/2);
$("#content-area").scrollLeft(scrollX);
$("#content-area").scrollTop(scrollY);
それは仕事を取得します...
私がクリックしている要素はD3ノードではなく、単純なテキストリストです。次に、リスト項目の名前を使用してd3.selectを実行し、d3ノードを取得します。だから私はd3ノードを持って、私はそれがx/yの座標を知っている、私の質問は、今私はscrollTopとscrollLeftを設定することができますように正しいスクロール位置を計算する方法は、 –