2012-11-08 14 views
5

मैं एक विशिष्ट ऑब्जेक्ट में jQuery ऑब्जेक्ट में तत्व जोड़ने की कोशिश कर रहा हूं। हालांकि, परिणाम सेट को डीओएम पेड़ के समान ही आदेश दिया जाता है। उदाहरण के लिए:jQuery मिलान किए गए सेट में जोड़े गए आइटमों का क्रम कैसे सुरक्षित रखें?

<div>one</div> 
<span>two</span> 
<p>three</p> 

... 

var $result = $("span").add("p").add("div"); 

मैं एक परिणाम सेट जहां $ परिणाम [0] अवधि, $ परिणाम है [1] पी है, और इतने पर चाहते हैं। हालांकि, उन्हें डीओएम के समान ही आदेश दिया जाता है।

क्या एक jQuery ऑब्जेक्ट बनाने का कोई और तरीका है जैसे मैं इरादा कर रहा हूं, .add() के अलावा?

मुझे पता है कि मैं आदेश निर्दिष्ट करने के लिए उन्हें कुछ डेटा प्रॉपर्टी असाइन कर सकता हूं, और इसके द्वारा निर्धारित मेरे परिणाम को सॉर्ट कर सकता हूं। हालांकि, मुझे अपने ऐप के भीतर दर्जनों बार होने की आवश्यकता होगी और ऑर्डर डेटा वैल्यू असाइन करना होगा और प्रत्येक बार सॉर्ट करना वास्तव में बदसूरत होगा, और इसे लागू करने में बहुत लंबा समय लगेगा।

+0

शायद आप शामिल कर सकते हैं कि आपको इसकी आवश्यकता क्यों है। यह संभव है कि एक और विकल्प है जिसके बारे में आपने सोचा नहीं है। –

+1

शायद आप इस गलत तरीके से सोच रहे हैं। यदि आप ऑर्डर सूची चाहते हैं, तो एक सरणी का उपयोग करें। एक jQuery सेट एक सेट है (यानी unordered)। जब आप सेट पर कोई कार्रवाई करते हैं, तो आप इसकी देखभाल क्यों करते हैं कि यह किस क्रम में है? – Avi

+0

@Avram वास्तव में, एक jQuery सेट को केवल ऐरे की तरह ऑर्डर किया जाता है (यह एक देशी ऐरे संरचना की नकल करता है)। – David

उत्तर

5

आप उपयोग कर सकते हैं देशी Array.push:

$.fn.push = function(selector) { 
    Array.prototype.push.apply(this, $.makeArray($(selector))); 
    return this; 
}; 

var $result = $("span").push("p").push("div"); 

डेमो: http://jsfiddle.net/ZUAcy/

आप jQuery add() के हुड के पीछे यह है कि सोच सकते हैं लेकिन यह वास्तव में समारोह से एक pushStack लौट यह चयनकर्ताओं है अनुकूलन करने के लिए : http://james.padolsey.com/jquery/#v=1.7.2&fn=jQuery.fn.add

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