2012-03-24 150 views
0

我想在單擊節點時更改節點的顏色。我有一些jQuery來上點擊獲取並顯示在<div>一些用戶信息:在d3圖形中單擊時更改節點顏色

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

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

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

     }); 

我希望能夠選擇的節點,並改變其顏色相同的代碼,如果可能的話。

謝謝

回答

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 hack) – eli 2012-03-24 16:12:28

+0

我的不好,我雖然主要問題是範圍,但不是實際的功能來改變顏色:) – fsodano 2012-03-24 16:15:08

相關問題