2014-10-16 1 views
1

저는 D3을 처음 접했고 그 중 하나를 클릭하면 모든 서클의 크기를 조정하는 방법을 알아 냈습니다. 그러나 내가 원하는 것은 클릭 한 원의 크기 만 조절하는 것입니다. 나머지 서클은 동일하게 유지되어야합니다.클릭했을 때 원의 크기를 조정하려면 어떻게해야합니까?

HTML :

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

자바 스크립트/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에 대해서는 알지 못합니다. –

+0

그런 HTML 코드를 사용하는 것에 대한 요점이 있습니까? D3 내에서 전체 원을 구성 할 수 있습니다. 그렇게하면 모든 것을 간소화 할 수 있습니다. – squishy

답변

0

이 정보가 도움이 되나요?

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

당신은'mousedown' 이벤트를 사용하고, 또 다른 콜백을'mouseup'에 바인드하여 65로 되돌릴 수 있습니다. – mgold

+1

정적 숫자 대신 스칼라를 사용하는 것이 좋습니다. 예 : .on ("클릭", 기능 (d) {d3.select (this) .attr ("r", d.r * 3);}); – squishy

+0

이것은 효과가 있습니다! 감사! 반경을 클릭하지 않고 원으로 어떻게 바꿀 수 있는지에 대한 아이디어가 있습니까? 예를 들어''

click me
''을 클릭하고 특정 원의 반지름을 변경할 수 있습니까? – stufftodo

관련 문제