2017-05-19 14 views
2

D3のノードのテキストをクリックして表示/非表示しようとしています。D3 - クリックしたノードのみのテキストの表示/非表示

var node = svg.selectAll(".node") 
    .data(json.nodes) 
    (...) 

node.on("click", function() { 
    if (textShowing) { 
    node.select("text").style("visibility", "hidden"); 
    } else { 
    node.select("text").style("visibility", "visible"); 
    } 
    textShowing = !textShowing; 
}); 

のtextプロパティ内のコードの結果、すべてののノードがそれらのいずれかをクリックするだけで消える/表示:私は、次のコードを使用してみました。

クリックしたノードのテキストプロパティにどのように影響を与えることができますか?

+1

代わりに 'node.select( "テキスト")' '行うd3.select(この).selectの(」テキスト ")'。 –

+1

@GerardoFurtado私が受け入れることができるように答えてください。ありがとうございました! – 3yakuya

答えて

2

nodeは、すべてのグループを含む選択です(選択肢全体をコピー/貼り付けしていないため、グループとみなします)。

クリックしたグループ内で何かしたい場合は、d3.select(this)を使用して選択する必要があります。これは現在の(あなたの場合はクリックされた)DOM要素を選択します。したがって

、代わりに:

node.select("text") 

それは次のようになります。

d3.select(this).select("text") 
関連する問題