2013-08-07 20 views
13

Próbuję wyświetlić tekst węzła po najechaniu myszą. Kiedy najecham na ten węzeł, mam nieprzezroczystość dla zmieniającego się koła svg, ale pojawia się tylko tekst pierwszego węzła. Stwierdziłem, że dzieje się tak ze względu na sposób, w jaki używam elementu select, ale nie mogę dowiedzieć się, jak wyciągnąć poprawny tekst dla węzła, na którym się unoszą. Oto, co mam obecnie.Pokaż tekst węzła D3 po najechaniu myszą

node.append("svg:circle") 
    .attr("r", function(d) { return radius_scale(parseInt(d.size)); }) 
    .attr("fill", function(d) { return d.fill; }) 
    .attr("stroke", function(d) { return d.stroke; }) 
    .on('mouseover', function(d){ 
     d3.select(this).style({opacity:'0.8'}) 
     d3.select("text").style({opacity:'1.0'}); 
       }) 
    .on('mouseout', function(d){ 
     d3.select(this).style({opacity:'0.0',}) 
     d3.select("text").style({opacity:'0.0'}); 
    }) 
    .call(force.drag); 
+0

Można też po prostu jednym polu tekstowym, a następnie przesuń go w odpowiednim miejscu podczas myszą punktów. – naught101

Odpowiedz

29

Jeśli używasz d3.select szukasz całą Dom na <text> elementów i wybranie pierwszego. Aby wybrać określone węzły tekstowe, potrzebujesz bardziej szczegółowego selektora (np. #textnode1) lub musisz użyć podseleksu, aby ograniczyć wybór w danym węźle nadrzędnym. Na przykład, jeżeli element <text> żył bezpośrednio w węźle w swojej przykład można użyć:

.on('mouseover', function(d){ 
    var nodeSelection = d3.select(this).style({opacity:'0.8'}); 
    nodeSelection.select("text").style({opacity:'1.0'}); 
}) 
+0

Element tekstowy znajdował się w samym węźle, więc udało mi się go uruchomić, używając kodu podanego jako mouseover i mouseout samego węzła. – user1855009

Powiązane problemy