2013-01-04 19 views
5

मैं कुछ फ़ंक्शन मेरे फ़ंक्शन में आ रहा हूं।क्या यह जांचने के लिए है कि कोई जेएस वैरिएबल डी 3 चयन है या नहीं?

यदि इनमें से पहला डी 3 चयन है, तो मैं इसका उपयोग करना चाहता हूं, अन्यथा मैं एक डिफ़ॉल्ट चयन का उपयोग करना चाहता हूं।

मैं कैसे जांचूं कि एक चर एक डी 3 चयन है या नहीं? यदि चर sel एक d3.selection है

+1

आमतौर पर लोग इसके लिए डकटाइपिंग का उपयोग करते हैं। अर्थात। जांचें कि क्या वेरिएबल में आपके पास आवश्यक गुण हैं और फिर मान लें कि यह वह ऑब्जेक्ट है जिसे आप ढूंढ रहे हैं यदि इसमें कुछ गुण हैं। – ThiefMaster

+0

वैसे वास्तविक रीबंडिंग विधि सार है क्योंकि मैं उस कोड को बार-बार दोहराना नहीं चाहता हूं (उन कार्यों में से एक जो फ़ंक्शन डीलियां लौटाते हैं)। मैं वर्तमान में 'd3SelectorOrNot.selectAll' की जांच करता हूं लेकिन यह बदमाश लगता है। मैंने जिन अधिकांश पुस्तकालयों के साथ काम किया है, वे 'isMyLibraryObject() 'फ़ंक्शन प्रदान करते हैं। मुझे उम्मीद है कि डी 3 भी करता है, मुझे बस यह नहीं मिल रहा है। –

उत्तर

9

जांचने के लिए:

var isselection = sel instanceof d3.selection; 
1

कृपया ध्यान दें कि जो डॉक्स में प्रदान की जाती है इस सवाल का जवाब (sel instanceof d3.selection) के लिए ऊपर संदर्भित,: https://github.com/mbostock/d3/wiki/Selections#d3_selection, IE9 में काम नहीं करेगा।

यह यहां समझाया गया है: https://github.com/mbostock/d3/issues/851

यह IE9 के साथ एक मुद्दा है और डी 3 में तय नहीं किया जाएगा। इस प्रतिबद्धता में एक कार्यवाही मिल सकती है: https://github.com/palantir/plottable/pull/637

इसके बजाय (typeof sel[0] !== "string") का उपयोग कर। यह स्पष्ट नहीं है लेकिन यह इस बात पर निर्भर करेगा कि आपको IE9 का समर्थन करने की आवश्यकता है या नहीं।

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

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