2014-10-16 40 views
1

我是D3的新手,當我點擊其中的任何一個時,都想出瞭如何調整所有圈子的大小。但是,我想要的只是調整被點擊的圈子的大小。其餘的圈子應該保持不變。以下是我有:如何在點擊時調整圈子大小?

HTML:

<g id="bubble-nodes"> 
    <rect id="bubble-background"></rect> 
    <a class="class="bubble-node"> 
     <circle r="65"></circle> 
    </a> 
    .... 
</g> 

的JavaScript/D3:

// this works. It allows me to resize all circles when I click on one of them. 
// but, it's not what I want 
var resizeCircle = function() { 
    var circle = d3.selectAll('circle'); 
    circle.attr("r", 85); 
}; 

// this is what I want, but it doesn't work. 
// I want to resize the circle I clicked on 
var circle = d3 
    .selectAll('circle') 
    .on("click", function (d) { 
     return d.attr("r", 85); 
    }); 

有什麼建議?

+0

我可以幫助您使用JS/CSS,但我對D3一無所知。 – 2014-10-16 22:53:16

+0

是否有點使用這樣的HTML代碼?你可以在D3中構造整個圓。這樣你就可以精簡一切。 – squishy 2014-10-17 01:56:58

回答

0

這有幫助嗎?

var circle = d3 
    .selectAll('circle') 
    .on('click', function (d) { 
     d3.select(this).attr("r", 85); 
    }); 
+1

您將要使用'mousedown'事件,然後將另一個回調綁定到'mouseup'將其恢復爲65. – mgold 2014-10-17 01:52:34

+1

使用標量而不是靜態數字非常好。 (「click」,function(d){d3.select(this).attr(「r」,d.r * 3);}); – squishy 2014-10-17 01:58:14

+0

這工作!謝謝!關於如何在不點擊的情況下改變我們的圈子半徑的任何想法?例如,我可以點擊「'

click me
''並讓它改變特定圓的半徑。 – stufftodo 2014-10-17 13:49:59

相關問題