2012-03-24 23 views
0

クリックするとノードの色を変更したいと思います。私は、可能な場合、ノードを選択し、同じコードでその色を変更することができるようにしたいと思いd3グラフでクリックするとノードの色を変更します

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

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

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

     }); 

:私はクリックで<div>で一部のユーザー情報を取得し、表示するためのいくつかのjQueryを持っています。

ありがとうございました

答えて

0

元気?

ノードをクリックした後、またはリクエストが終了したときにそれを実行するかどうかはわかりません。したがって、次のコードを使用して必要なものを使用してください。

注:関数のスコープを変更したり、パラメータを渡したりできる.callメソッドを使用しています。

の使用は基本的に

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

は、それが何をするか見るために放火魔でそれを実行しています!

ので、関数は次のようになります。

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 
}); 

乾杯!

+0

ありがとうございますが、上記のコードは機能しませんでした。私はこれを行うにはd3を使ってノードの属性を選択して変更する必要があると思います(例えばCSSのハックではない) – eli

+0

私の主な問題はスコープであっても実際の関数ではありません。 – fsodano

関連する問題