2014-05-17 11 views
8

क्या मैं एसवीजी समूहों के बीच एक एसवीजी तत्व ले जा सकता हूं - दृश्यों के पीछे बहुत अधिक गणना को हल किए बिना और न ही अपने कोड में बहुत अधिक कोड तैयार करना? d3 api documentation का उल्लेख है कि आप हटाए गए तत्वों को फिर से जोड़ नहीं सकते हैं (?)।क्या मैं एसवीजी समूहों के बीच एसवीजी तत्वों को स्थानांतरित कर सकता हूं, d3.js

इसे अपने मूल समूह से हटाने के बाद तत्व को दोबारा शुरू करना - मेरे कोड में बोझिल लग सकता है, और डी 3 और ब्राउज़र के लिए अधिक महंगा हो सकता है, यदि यह संभव हो।

यह समूह के साथ इसे जोड़ने से पहले तत्व को परिभाषित करने के लिए भी प्रासंगिक है, न कि केवल इसे समूहों के बीच में स्थानांतरित करने के लिए (यानी गैर-समूह से समूह में किसी तत्व को स्थानांतरित करने के लिए)।

उत्तर

1

आप इसे डी 3 में नहीं कर सकते हैं, लेकिन JQuery के पास .appendTo() function है, उदाहरण के लिए

$("#element").appendTo("#otherGroup"); 
+0

धन्यवाद लेकिन हम jQuery का उपयोग नहीं करते हैं, क्योंकि हमें पुराने ब्राउज़र का समर्थन करने की आवश्यकता नहीं है ... मैं इसके लिए इसे पेश नहीं करूंगा। आम तौर पर, क्या यह स्वयं के आसपास एसवीजी तत्वों को स्थानांतरित करना सुरक्षित है (उदा। समूह में) और बाद में उन पर d3.js का आह्वान करें? – matanster

+0

निश्चित रूप से, ध्यान रखने योग्य एकमात्र चीज यह है कि आप किसी भी बाध्य डेटा को आगे बढ़ाएंगे। –

12

docs you posted भी है कि आप .append या .insert करने के लिए एक समारोह को पारित करके तत्वों फिर से जोड़ सकते उल्लेख। यहां बताया गया है कि यह कहता है:

ध्यान दें कि हटाए गए तत्वों को दस्तावेज़ में वापस जोड़ने के लिए वर्तमान में एक समर्पित API नहीं है; हालांकि, आप तत्वों को दोबारा जोड़ने के लिए चयन .append या select.insert पर फ़ंक्शन पास कर सकते हैं।


चयन पर .remove का उपयोग कर के बाद से वापस आती है कि चयन, यदि आपने निकाले गए तत्व एक चर में .append यह नए समूह के लिए निकाले गए चयन से डोम तत्व हड़पने के लिए selection.node() का उपयोग कर संग्रहीत कर सकती है, और उसके बाद:

var removed = yourSelection.remove(); 
yourTargetGroup.append(function() { 
    return removed.node(); 
}); 

यहां एक साधारण Fiddle है जो एक क्लिक हैंडलर में एक समूह से दूसरे समूह में एक सर्कल तत्व को स्थानांतरित करने के लिए इस तकनीक का उपयोग करता है।

+0

इसे सही के रूप में स्वीकार किया जाना चाहिए। – wberry

संबंधित मुद्दे