मैं jQuery का उपयोग करके ड्रॉपडाउनलिस्ट में विकल्प कैसे जोड़ सकता हूं?


291

जैसा कि सवाल है, मैं jQuery का उपयोग कर एक ड्रॉपडाउनलिस्ट में एक नया विकल्प कैसे जोड़ूं?

धन्यवाद


बस जिज्ञासु, यह सवाल क्यों नीचा दिखाया गया था? शायद इसलिए कि यह कोई कोड स्निपेट नहीं दिखाता है :)
shasi kanth

जवाबों:


451

किसी भी अतिरिक्त प्लगइन्स का उपयोग किए बिना,

var myOptions = {
    val1 : 'text1',
    val2 : 'text2'
};
var mySelect = $('#mySelect');
$.each(myOptions, function(val, text) {
    mySelect.append(
        $('<option></option>').val(val).html(text)
    );
});

यदि आपके पास बहुत सारे विकल्प थे, या इस कोड को बहुत बार चलाने की आवश्यकता थी, तो आपको अनावश्यक रूप से DOM को संशोधित करने के बजाय एक DocumentFragment का उपयोग करना चाहिए । केवल कुछ मुट्ठी भर विकल्पों के लिए, मैं कहूंगा कि यह इसके लायक नहीं है।

------------------------------- जोड़ा गया ------------------ --------------

DocumentFragmentगति बढ़ाने के लिए अच्छा विकल्प है, लेकिन हम document.createElement('option')IE6 और IE7 का समर्थन नहीं कर रहे हैं के बाद से विकल्प तत्व नहीं बना सकते ।

हम क्या कर सकते हैं, एक नया चुनिंदा तत्व बनाएं और फिर सभी विकल्पों को जोड़ दें। एक बार लूप समाप्त होने के बाद, इसे वास्तविक DOM ऑब्जेक्ट में जोड़ें।

var myOptions = {
    val1 : 'text1',
    val2 : 'text2'
};
var _select = $('<select>');
$.each(myOptions, function(val, text) {
    _select.append(
            $('<option></option>').val(val).html(text)
        );
});
$('#mySelect').append(_select.html());

इस तरह हम DOM को केवल एक बार के लिए संशोधित करेंगे!


8
विधि पैरामीटर थोड़ा भ्रामक हैं, उदाहरण के लिए फ़ंक्शन (वैल, टेक्स्ट) फ़ंक्शन (इंडेक्स, विकल्प) होना चाहिए। अन्यथा अच्छी तरह से काम करता है।
mbillard

14
@Crossbrowser: मैं असहमत हूं - valऔर textवास्तव में चर और उनके उपयोग का वर्णन करता हूं ।
निक जुले

1
केवल उस उदाहरण के लिए, हालांकि एक सामान्य उद्देश्य विधि के रूप में, वे चर भ्रामक हैं (इसने मुझे उस विधि का उपयोग करने का कोई सुराग नहीं दिया)। हालाँकि, मैं देता हूँ कि उत्तर $ .each पद्धति के उपयोग के बारे में नहीं था।
mbillard

1
मैं पहले इस्तेमाल कर रहा था mySelect.append(new Option(text, val));, जो IE8 में काम नहीं करता था। मुझे mySelect.append($('<option></option>').val(val).html(text));
मैथ्यू क्लार्क

5
@ बरिंसोल:.attr('selected', true|false)
निक

167

प्लग-इन नहीं होने से, यह अधिक jQuery का उपयोग किए बिना आसान हो सकता है, बजाय थोड़ा पुराने स्कूल में जाने के:

var myOptions = {
    val1 : 'text1',
    val2 : 'text2'
};
$.each(myOptions, function(val, text) {
    $('#mySelect').append( new Option(text,val) );
});

यदि आप यह निर्दिष्ट करना चाहते हैं कि क्या विकल्प a या a डिफ़ॉल्ट चयनित मूल्य है, और b) को अभी चुना जाना चाहिए, तो आप दो और मापदंडों में पास कर सकते हैं:

    var defaultSelected = false;
    var nowSelected     = true;
    $('#mySelect').append( new Option(text,val,defaultSelected,nowSelected) );

1
आप डिफ़ॉल्ट मान का चयन करने जैसे गुण कैसे सेट करते हैं?
कृष्णन

20
मुझे यह "<option></option>"विधि की तुलना में बेहतर है ; यह गंदा लगता है।
जोश एम।

1
ie8 में काम नहीं करता है .. बस इसे आज़माया और नीचे इस पर एक और टिप्पणी भी देखी।
ब्रायनसोल

13

प्लगइन के साथ: jQuery चयन बॉक्स । तुम यह केर सकते हो:

var myOptions = {
        "Value 1" : "Text 1",
        "Value 2" : "Text 2",
        "Value 3" : "Text 3"
    }
    $("#myselect2").addOption(myOptions, false); 

11

आप अपने DropDown को पहले $ ('# DropDownQuality') खाली करना चाह सकते हैं।) ()

मेरे पास MVC में मेरा नियंत्रक केवल एक आइटम के साथ एक चयन सूची है।

$('#DropDownQuality').append(
        $('<option></option>').val(data[0].Value).html(data[0].Text));    

7

भीख में सूची में आइटम जोड़ें

$("#ddlList").prepend('<option selected="selected" value="0"> Select </option>');

अंत में सूची में आइटम जोड़ें

$('<option value="6">Java Script</option>').appendTo("#ddlList");

JQuery का उपयोग करके सामान्य ड्रॉपडाउन ऑपरेशन (प्राप्त करें, सेट करें, जोड़ें, निकालें)


1
यदि आप अपने विकल्प मापदंडों के अंदर डबल-कोट्स का उपयोग करते हैं तो वे फ़ंक्शन को बंद कर देंगे और स्क्रिप्ट को तोड़ देंगे। बदलने के .prepend("...") / $("...")लिए .prepend('...') / $('...')स्निपेट को ठीक करना होगा।
हेराल्डमोनकी

4

कृपया ध्यान दें @ सभी प्रमुख ब्राउज़रों में @ nickf के काम करते समय Phrogz का समाधान IE 8 में काम नहीं करता है। एक और तरीका है:

$.each(myOptions, function(val, text) {
    $("#mySelect").append($("&lt;option/&gt;").attr("value", val).text(text));
});

3

यू डायरेक्ट इस्तेमाल कर सकते हैं

$"(.ddlClassName").Html("<option selected=\"selected\" value=\"1\">1</option><option value=\"2\">2</option>")

-> यहाँ यू डायरेक्ट स्ट्रिंग का उपयोग कर सकते हैं



0

jquery का उपयोग करके आप उपयोग कर सकते हैं

      this.$('select#myid').append('<option>newvalue</option>');

जहां " myid " ड्रॉपडाउन सूची की आईडी है और newvalue वह पाठ है जिसे आप सम्मिलित करना चाहते हैं ..


0

मुझे ड्रॉपडाउन में अधिक से अधिक विकल्प जोड़ने की आवश्यकता थी क्योंकि मेरे पृष्ठ पर ड्रॉपडाउन थे। तो मैंने इसे इस तरह से इस्तेमाल किया:

function myAppender(obj, value, text){
    obj.append($('<option></option>').val(value).html(text));
}

$(document).ready(function() {
    var counter = 0;
    var builder = 0;
    // Get the number of dropdowns
    $('[id*="ddlPosition_"]').each(function() {
        counter++;
    });

    // Add the options for each dropdown
    $('[id*="ddlPosition_"]').each(function() {
        var myId = this.id.split('_')[1];

        // Add each option in a loop for the specific dropdown we are on
        for (var i=0; i<counter; i++) {
            myAppender($('[id*="ddlPosition_'+myId+'"]'), i, i+1);
        }
        $('[id*="ddlPosition_'+myId+'"]').val(builder);
        builder++;
    });
});

यह गतिशील रूप से 1 से n जैसे मानों के साथ ड्रॉपडाउन सेट करता है, और स्वचालित रूप से उस ऑर्डर के लिए मूल्य का चयन करता है जो ड्रॉपडाउन में था (यानी बॉक्स में ड्रॉपडाउन को "2" मिला, आदि)।

यह हास्यास्पद था कि मैं अपने 2 वें में उपयोग thisया this.Objectया $.objऐसा कुछ भी नहीं कर सकता था .each(), हालांकि --- मुझे वास्तव में उस वस्तु की विशिष्ट आईडी प्राप्त करनी थी और फिर उस पूरे ऑब्जेक्ट को मेरे फ़ंक्शन में ले जाना और पास करना होगा, इससे पहले कि यह संलग्न हो जाए। सौभाग्य से मेरे ड्रॉपडाउन की आईडी को "_" द्वारा अलग कर दिया गया था और मैं इसे पकड़ सकता था। मुझे नहीं लगता कि मुझे होना चाहिए था, लेकिन यह मुझे अन्यथा jQuery अपवाद देता रहा। कुछ अन्य जो मुझे जानने का आनंद ले रहे थे, उससे जूझ रहे थे।


आप प्रत्येक में काउंटर क्यों बढ़ा रहे हैं? क्या आप jquery में नए हैं? var काउंटर = $ ('[id * = "ddlPosition _"]')। लंबाई कम क्रिया है और अधिक कुशल है। मुझे लगता है कि आपको अपना कोड पोस्ट करने से पहले थोड़ा और अनुभव चाहिए। यह उत्पादन गुणवत्ता कोड नहीं है क्योंकि यह इस तरह के एक तुच्छ कार्य के लिए खराब लिखित और अत्यधिक जटिल है। कोई अपराध नहीं लेकिन एक कारण है कि आपके पास 58 उत्तर हैं और वोट नहीं हैं।
एथेंस होलोवे

आपने स्पष्ट रूप से गलत समझा कि मैं क्या बना रहा था। काउंटर ड्रॉप डाउन में पोस्ट किए गए मान को बढ़ाने के लिए है, और मेरे पास एक ही आईडी के साथ कई थे, बस अंत में एक अलग "_ ##" के साथ, इसलिए .length () गलत था। चयनकर्ता में "आईडी * =" का यही कारण है।
vapcguy

मेरे अन्य उत्तरों के लिए, आम तौर पर मैं जब भी संभव हो, सरल तरीकों की वकालत करता हूं, और यदि लोग अपने कोडिंग के साथ बहुत गूढ़ नहीं थे और जो चीजें अधिक सरलीकृत होती हैं, तो मेरे उत्तरों में संभवतः अधिक वोट होंगे। लेकिन लोग खुद को स्मार्ट दिखना चाहते हैं और इसलिए वे इतना सरल कुछ नहीं चुनेंगे। केवल उद्योग के लिए मुझे गलत नहीं करना है। मैं अन्य लोगों के कोड पर समस्या निवारण या निर्माण का आनंद नहीं लेता हूं जो हास्यास्पद रूप से अधिक जटिल है, जितना कि इसकी आवश्यकता है।
vapcguy

मुझे उस लूप में $ (इस) .length () में अधिक आत्मविश्वास हो सकता है अगर कोई समझा सकता है कि क्यों myAppender की वस्तु के बजाय "$ (यह)" भेजना काम नहीं किया।
vapcguy

0

लगता है कि आपकी प्रतिक्रिया "उत्तराधिकारी" है। इसमें एक सूची है जिसे आपको ड्रॉपडाउन मेनू में विकल्प के रूप में जोड़ना होगा।

success: function (successData) {
var sizeOfData = successData.length;
if (sizeOfData == 0) {
    //    NO DATA, throw an alert ...
    alert ("No Data Found");
} else {
    $.each(successData, function(val, text) {
        mySelect.append(
            $('<option></option>').val(val).html(text)
        );
    });
} }

यह आपके लिए काम करेगा ...।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.