2012-03-24 8 views
0

Ich möchte die Farbe eines Knotens ändern, wenn darauf geklickt wird. Ich habe einige Jquery zu holen und in einem <div> auf Klick einige Benutzerinformationen anzuzeigen:Ändern der Knotenfarbe beim Klicken auf d3 Grafik

node.on("click", function(d) { 

    $.get("/user_info/" + d.name, function(data){ 

      $("#user").html(data); 

     }); 

Ich möchte in der Lage sein wählen Sie den Knoten und ändern ihre Farbe in den gleichen Code, wenn möglich.

Danke

Antwort

0

wie geht es Ihnen?

Ich bin nicht sicher, ob Sie es tun möchten, sobald Sie auf den Knoten klicken oder wenn die Anfrage vorbei ist, also nehmen Sie bitte den folgenden Code und verwenden Sie, was Sie brauchen.

Hinweis Ich verwende die .call-Methode, mit der Sie den Umfang der Funktion ändern (und Parameter an sie übergeben können).

Die Nutzung ist im Grunde

(function(){ console.log(this); console.log(arguments); }).call({ obj: "Hi, i'm the scope"},1,2,3,4,5,6); 

Run es in Firebug, um zu sehen, was es tut!

So würde die Funktion wie folgt aussehen:

node.on("click", function(d) { 
    //In this context, 'this' is the element that got clicked 
    $(this).css({ background: 'red' }); //Changes to red when clicked 

    $.get("/user_info/" + d.name, (function(data){ 
      $(this).css({ background: 'blue' }); //Changes to blue when finished 
      $("#user").html(data); 

    }).call(this)); //'this' in this context refers to the node that was clicked, so we pass it as a scope for the anonymous function that will handle your request 
}); 

Prost!

+0

Danke, aber der obige Code hat nicht funktioniert. Ich denke, dass dies getan werden muss, indem Sie d3 verwenden, um die Knotenattribute auszuwählen und zu ändern (z. B. nicht mit einem css-Hack) – eli

+0

Mein schlechtes, ich war das Hauptproblem waren Bereiche, nicht die eigentliche Funktion, die Farbe zu ändern :) – fsodano