को दूर तुम इस तरह यह कर सकते हैं:
var found = [];
$("select option").each(function() {
if($.inArray(this.value, found) != -1) $(this).remove();
found.push(this.value);
});
Give it a try here, यह एक सरल तरीका है, हम यदि हमें मूल्य नहीं मिला है, तो उसे केवल मान प्राप्त नहीं किया गया है, अगर इसे में मान मिला है, तो यह एक डुप्ली है जिसे हमने पहले पाया था, .remove()
।
यह केवल <select>
क्रॉल करता है एक बार, डोम ट्रेवर्सल जो एक बहुत अधिक सरणी संचालन से महंगा है कम से कम। इसके अलावा हम के बजाय $.inArray()
का उपयोग कर रहे हैं, इसलिए यह IE में ठीक से काम करता है।
आप एक कम कुशल लेकिन छोटे समाधान चाहते हैं (सिर्फ उदाहरण के लिए, पहली विधि का उपयोग!):
$('select option').each(function() {
$(this).prevAll('option[value="' + this.value + '"]').remove();
});
You can test it here, इस समान मूल्य वाली सभी भाई बहन निकालता है, लेकिन यह बहुत ज्यादा है पहली विधि से महंगा (डीओएम ट्रैवर्सल महंगा है, और कई चयनकर्ता इंजन यहां कॉल करते हैं, और भी बहुत कुछ)। हम .prevAll()
का उपयोग कर रहे हैं क्योंकि आप .siblings()
को .each()
के अंदर नहीं हटा सकते हैं, इससे लूप के साथ कुछ त्रुटियां हो जाएंगी क्योंकि यह अगले बच्चे की अपेक्षा की जाती है।
स्रोत
2010-07-12 10:54:34
मेरे जैसे रूकीज़ की मदद करने के लिए टिप्पणी करें। यदि आप एक jQuery नॉकनफ्लिक्ट का उपयोग करते हैं तो सुनिश्चित करें कि आपने जो कुछ भी चुना है उसके साथ आप सभी $ को प्रतिस्थापित करें। आपको बहुत समय डिबगिंग बचाएगा। :) - http://api.jquery.com/jquery.noconflict/ –
@ जोशुआ डांस आप इसे एक ऐसे फ़ंक्शन में भी लपेट सकते हैं जहां चीजों को सरल बनाने के लिए '$' jQuery है, जैसे: '(function ($) {... कोड ...}) (jQuery); '(या कुछ और अगर यह 'jQuery' नहीं है)। इसका मतलब यह है कि जो कुछ भी आपने चुना है वह कोड या प्लगइन के हर बिट को संशोधित करने के बजाय 1 स्थान पर जाता है। –
यह विधि पृष्ठ पर सभी ** ** ** में डुप्लीकेट को रोक देगा। उदाहरण के लिए यदि आपके पास एकाधिक हां/नहीं हैं तो केवल पहले विकल्प में विकल्प होंगे। अपने पहेली और परीक्षण में चयन डुप्लिकेट करें। इसलिए पेज पर एक से अधिक विकल्प नहीं दिखाई देंगे। एचएच –