2013-10-15 10 views
6

क्या चयन को समेकित करने के लिए डी 3 में कोई तरीका है?D3.js: समेकित चयन?

केस का उपयोग करें: मैं दोनों को अद्यतन और एक विशेष चयन के चयन दर्ज करना चाहता हूं।

मैं इस प्रकार कर सकते हैं:

var s = d3.selectAll('.yellow').data(myData); 
s.on('mouseover'... 
s.enter().append('path').attr('class','yellow').on('mouseover'... 

लेकिन मैं कोड की एक पंक्ति के साथ यह करने के लिए पसंद करेंगे।

+1

इस विशेष मामले में आपको संयोजित करने की आवश्यकता नहीं है - 'एंटर' चयन को 'अपडेट' चयन में विलय करने के बाद विलय हो जाता है, इसलिए आपको बस 'अपडेट' चयन से पहले '.enter()' को संभालना है। –

+0

आह मैं देखता हूं, धन्यवाद। – Richard

+0

मैं इसे संदर्भ के उत्तर के रूप में जोड़ दूंगा। –

उत्तर

7

इस विशेष मामले में आपको संयोजित करने की आवश्यकता नहीं है - प्रवेश चयन को अद्यतन चयन में विलय करने के बाद विलय हो जाता है, इसलिए आपको अपडेट चयन से पहले .enter() को संभालना होगा।

सामान्य रूप से, आप वास्तव में चयनों को समान रूप से संयोजित नहीं कर सकते हैं, लेकिन व्यवहार में यह वास्तव में आवश्यक नहीं है। आप या तो सभी आवश्यक तत्वों को चुनने के लिए चयन स्थिति को संशोधित कर सकते हैं, या यदि यह संभव नहीं है, तो सभी चयनित तत्वों पर फ़ंक्शन चलाने के लिए .call() का उपयोग करें। इस तरह आपको गुणों को सेट करने के लिए कोड दोहराने की आवश्यकता नहीं है।

+4

यदि डी 3 में चयन संयोग था तो यह बहुत उपयोगी होगा। कभी-कभी चयन में शामिल जटिल तर्क होते हैं और एक फ़ंक्शन में कोड को स्थानांतरित करते हैं और दो अलग-अलग स्थानों में कॉल करना कुछ (जैसे चयन 1 + चयन 2) से कम पठनीय होता है .doYourThings() .. – mehmet