2012-01-31 11 views
10

मैं बल लेआउट के साथ एक अप्रत्यक्ष ग्राफ बनाने के लिए काम कर रहा हूं। इसके अलावा, मैं क्लिक सर्कल के साथ प्रत्येक सर्कल (नोड) रंग का पीछा करने की कोशिश करता हूं। सर्कल तत्वों पर ऐसी घटना जोड़ने का कोई विचार है। मैं इस कोड को बांधता हूं हालांकि यह काम नहीं कर रहा है।d3.js एक बल लेआउट सर्कल पर क्लिक कार्रवाई जोड़ना?

vis.selectAll("circle.node").on("click", function(d){ 
    vis.select(d).attr(r, 25) 
    .style("fill","lightcoral") 
    .style("stroke","red"); 
}); 
+0

क्या आपका मतलब 'attr ('r', 25)' था? – Dogbert

+0

मुझे ऐसे एफ़र परिवर्तन करने की आवश्यकता है हालांकि मैं चयनित नोड का चयन नहीं कर सकता। मैं "डी" को func के रूप में उपयोग करने का प्रयास करता हूं। सर्कल चुनने के लिए तर्क लेकिन यह काम नहीं करता है। – erogol

उत्तर

17

select(d) डेटा को संदर्भित करता है, तत्व नहीं। आप के लिए select(this)

vis.selectAll("circle.node").on("click", function(){ 
      d3.select(this).attr('r', 25) 
       .style("fill","lightcoral") 
       .style("stroke","red"); 
     }); 
2

vis.select(this) मुझे एक डोम अपवाद देता है की जरूरत है। d3.select(this) मेरे लिए काम करता है। आप क्लिक किए गए DOM तत्व तक पहुंचने के लिए d3.event.target का भी उपयोग कर सकते हैं।