दिलचस्प पोस्ट
कैसे एक UIBezierPath एनीमेट करने के लिए कुछ शब्दों के अस्तित्व के लिए रेगेक्स जिसका क्रम कोई फर्क नहीं पड़ता 1 से 10 तक विभिन्न संख्याएं स्क्रॉल किए जाने वाले डिवेल में फ़ॉज़न तालिका हैडर पासवर्ड के लिए नियमित अभिव्यक्ति (कम से कम 2 अंक और एक विशेष चरित्र और न्यूनतम लंबाई 8) सख्त (2048): EmailComponent :: Initialize () की घोषणा घटक के साथ संगत होना चाहिए :: आरंभ (नियंत्रक $ नियंत्रक) Jquery आईओएस -8859-1 एन्कोडिंग की उपेक्षा करता है फ़ाइल सामग्री को istringstream में कैसे पढ़ा जाए? प्रत्येक के बीच क्या अलग है और रूबी में विधि एकत्र करें किसी SQL सर्वर डेटाबेस में सभी तालिकाओं से सभी पंक्तियों को कैसे हटाएं? इंटेल सरणी के लिए स्विफ्ट में हाशनीय प्रोटोकॉल कैसे लागू करें (कस्टम स्ट्रिंग स्ट्रेट) पायथन उपयोगकर्ता से एक अक्षर पढ़ता है क्या span /> का प्रयोग बंद हो सकता है? अन्य छवियों पर प्लेस वॉटरमार्क छवि (सी #, एएसपी.नेट) तोड़ जब अपवाद फेंक दिया जाता है

JQuery के प्रयोग से वर्णानुक्रमिक रूप से क्रमबद्ध विकल्पों के विकल्प

मैं select तत्वों के बीच वर्णानुक्रमिक रूप से सॉर्टिंग option तत्वों को समझने की कोशिश कर रहा हूं। आदर्श रूप में, मैं इसे एक अलग फ़ंक्शन के रूप में करना चाहता हूं जहां मैं सिर्फ चयनित तत्व में ही पारित कर सकता हूं क्योंकि जब उपयोगकर्ता कुछ बटन क्लिक करता है तो उसे सॉर्ट करने की आवश्यकता होती है।

मैंने ऐसा करने के लिए एक उच्च तरीके से उच्च और निम्न खोज की है, लेकिन मेरे लिए काम करने वाले कुछ भी नहीं मिल पाए हैं

विकल्प तत्वों को वर्णानुक्रमिक रूप से सॉर्ट किया जाना चाहिए, मूल्य के अनुसार नहीं।

क्या यह किसी तरह से संभव है?

Solutions Collecting From Web of "JQuery के प्रयोग से वर्णानुक्रमिक रूप से क्रमबद्ध विकल्पों के विकल्प"

मैं क्या करूँगा:

  1. ऑब्जेक्ट की एक सरणी में प्रत्येक <option> टेक्स्ट और मान को निकालें;
  2. सरणी क्रमित करें;
  3. क्रम में सरणी सामग्री के साथ <option> तत्वों को अपडेट करें

ऐसा करने के लिए jQuery के साथ, आप यह कर सकते हैं:

 var options = $('select.whatever option'); var arr = options.map(function(_, o) { return { t: $(o).text(), v: o.value }; }).get(); arr.sort(function(o1, o2) { return o1.t > o2.t ? 1 : o1.t < o2.t ? -1 : 0; }); options.each(function(i, o) { o.value = arr[i].v; $(o).text(arr[i].t); }); 

यहाँ एक काम jsfiddle है

संपादित करें – यदि आप सॉर्ट करना चाहते हैं, तो आप वर्णमाला केस को अनदेखा कर सकते हैं, तो आप जावास्क्रिप्ट .toUpperCase() या .toLowerCase() कार्यों की तुलना करने से पहले उपयोग कर सकते हैं:

 arr.sort(function(o1, o2) { var t1 = o1.t.toLowerCase(), t2 = o2.t.toLowerCase(); return t1 > t2 ? 1 : t1 < t2 ? -1 : 0; }); 

स्वीकार्य उत्तर सभी मामलों में सबसे अच्छा नहीं है क्योंकि कभी-कभी आप विकल्पों की कक्षाओं और विभिन्न तर्कों (उदाहरण के लिए डेटा-फ़ू) को बनाए रखना चाहते हैं।

मेरा समाधान है:

 var sel = $('#select_id'); var selected = sel.val(); // cache selected value, before reordering var opts_list = sel.find('option'); opts_list.sort(function(a, b) { return $(a).text() > $(b).text() ? 1 : -1; }); sel.html('').append(opts_list); sel.val(selected); // set cached selected value 

// आईओ 11 के लिए या रिक्त विकल्प प्राप्त करने वाले, एचटीएमएल ('') खाली जगह ()

 <select id="mSelect" > <option value="val1" > DEF </option> <option value="val4" > GRT </option> <option value="val2" > ABC </option> <option value="val3" > OPL </option> <option value="val5" > AWS </option> <option value="val9" > BTY </option> </select> 

 $("#mSelect").append($("#mSelect option").remove().sort(function(a, b) { var at = $(a).text(), bt = $(b).text(); return (at > bt)?1:((at < bt)?-1:0); })); 

एचटीएमएल:

 <select id="list"> <option value="op3">option 3</option> <option value="op1">option 1</option> <option value="op2">option 2</option> </select> 

jQuery:

 var options = $("#list option"); // Collect options options.detach().sort(function(a,b) { // Detach from select, then Sort var at = $(a).text(); var bt = $(b).text(); return (at > bt)?1:((at < bt)?-1:0); // Tell the sort function how to order }); options.appendTo("#list"); // Re-attach to select 

मैंने ट्रेसीपिपिन के समाधान का उपयोग किया था, जो शानदार तरीके से काम किया था। मैं यहाँ एक तरह से संशोधित संस्करण प्रदान करता हूं जो मेरे जैसे किसी व्यक्ति को आसानी से पठनीय कोड प्राप्त करना पसंद करता है, और इसे समझने के बाद इसे संक्षिप्त कर देता है। मैंने भी विकल्प DOM तत्वों पर किसी बाइंडिंग को संरक्षित करने के लिए .remove बजाय।

पॉसी के समाधान का मेरा उन्नत संस्करण यहां है:

 function sortSelectOptions(selector, skip_first) { var options = (skip_first) ? $(selector + ' option:not(:first)') : $(selector + ' option'); var arr = options.map(function(_, o) { return { t: $(o).text(), v: o.value, s: $(o).prop('selected') }; }).get(); arr.sort(function(o1, o2) { var t1 = o1.t.toLowerCase(), t2 = o2.t.toLowerCase(); return t1 > t2 ? 1 : t1 < t2 ? -1 : 0; }); options.each(function(i, o) { o.value = arr[i].v; $(o).text(arr[i].t); if (arr[i].s) { $(o).attr('selected', 'selected').prop('selected', true); } else { $(o).removeAttr('selected'); $(o).prop('selected', false); } }); } 

फ़ंक्शन में skip_first पैरामीटर है, जो तब उपयोगी होता है जब आप शीर्ष पर पहला विकल्प रखना चाहते हैं, जैसे जब यह "नीचे चुना गया है:"।

यह पहले से चयनित विकल्प का ट्रैक भी रखता है

उदाहरण उपयोग:

 jQuery(document).ready(function($) { sortSelectOptions('#select-id', true); }); 

Jquery.selectboxes.js प्लगइन एक तरह से विधि है। आप प्लग-इन को कार्यान्वित कर सकते हैं, या विकल्पों को सॉर्ट करने के लिए एक तरीका देखने के लिए कोड में गोता लगाएँ।

यदि आपको इसकी ज़रूरत है, तो इससे आपको मैन्युअल रूप से पुनर्व्यवस्थित करने का एक विकल्प दिया जाएगा

कैसे आप गतिशील रूप से एक <विकल्प का चयन करें> सूची JQuery का उपयोग कर सकते हैं?

हां, आप विकल्पों को अपने पाठ के आधार पर क्रमबद्ध कर सकते हैं और इसे चयन बॉक्स में वापस जोड़ सकते हैं।

  function NASort(a, b) { if (a.innerHTML == 'NA') { return 1; } else if (b.innerHTML == 'NA') { return -1; } return (a.innerHTML > b.innerHTML) ? 1 : -1; }; 

बेला: https://jsfiddle.net/vaishali_ravisankar/5zfohf6v/

मुझे पता है कि यह विषय पुराना है लेकिन मुझे लगता है कि मेरा जवाब कई लोगों के लिए उपयोगी हो सकता है

ईएस 6 का इस्तेमाल करते हुए पॉसी के जवाब से बनाया गया jQuery प्लगिन यहां है:

 /** * Sort values alphabetically in select * source: http://stackoverflow.com/questions/12073270/sorting-options-elements-alphabetically-using-jquery */ $.fn.extend({ sortSelect() { let options = this.find("option"), arr = options.map(function(_, o) { return { t: $(o).text(), v: o.value }; }).get(); arr.sort((o1, o2) => { // sort select let t1 = o1.t.toLowerCase(), t2 = o2.t.toLowerCase(); return t1 > t2 ? 1 : t1 < t2 ? -1 : 0; }); options.each((i, o) => { o.value = arr[i].v; $(o).text(arr[i].t); }); } }); 

उपयोग बहुत आसान है

 $("select").sortSelect(); 

Malakgeorge उत्तर अच्छा है, आसानी से एक jQuery फ़ंक्शन में लिपटे जा सकते हैं:

 $.fn.sortSelectByText = function(){ this.each(function(){ var selected = $(this).val(); var opts_list = $(this).find('option'); opts_list.sort(function(a, b) { return $(a).text() > $(b).text() ? 1 : -1; }); $(this).html('').append(opts_list); $(this).val(selected); }) return this; }