2009-08-21 16 views
40

मैं निम्नलिखित एचटीएमएलJQuery-चुने सूची में चयनित विशेषता सेटिंग

<select id="dropdown"> 
    <option>A</option> 
    <option>B</option> 
    <option>C</option> 
</select> 

मैं स्ट्रिंग "बी" है, इसलिए मैं इस पर चयनित attrribute सेट करें कि वह हो जाएगा चाहते हैं:

<select id="dropdown"> 
    <option>A</option> 
    <option selected="selected">B</option> 
    <option>C</option> 
</select> 

मैं JQuery में यह कैसे करूँगा?

उत्तर

105

आप एक छोटे से अपने HTML को संशोधित करने के विकल्पों में से value विशेषता शामिल करने के लिए कोई आपत्ति नहीं है, तो आप काफी कोड आवश्यक करने के लिए कम कर सकते हैं ऐसा करते हैं:

<option>B</option> 

<option value="B">B</option> 
012 करने के लिए

<option value="IL">Illinois</option> 
इसी के साथ

, का पालन करें jQuery परिवर्तन कर देगा:

$("select option[value='B']").attr("selected","selected"); 

यदि आप तय नहीं का उपयोग शामिल करने के लिए

यह है जब आप की तरह कुछ करना चाहता हूँ सहायक होगा value विशेषता, आपको प्रत्येक विकल्प के माध्यम से चक्र की आवश्यकता होगी, और मैन्युअल रूप से इसकी मान जांचें:

$("select option").each(function(){ 
    if ($(this).text() == "B") 
    $(this).attr("selected","selected"); 
}); 
+14

'मान' विशेषताएँ जोड़ने के बाद, चयन भी इस तरह किया जा सकता है: '$ (" # ड्रॉपडाउन ")। वैल (" बी ");' –

+0

+1 - यह वही है जो मैं ढूंढ रहा था। भी, +1 @jorn – Jason

+0

हाय * @ जोनाथन सैम्पसन *: अच्छा समाधान। अन्य सभी चीजें .val() को सेट करने की सलाह देते हैं लेकिन यह मेरे लिए काम नहीं कर रहा था। – MikeSchinkel

1

आप शुद्ध डोम का उपयोग कर सकते हैं। http://www.w3schools.com/htmldom/prop_select_selectedindex.asp

document.getElementById('dropdown').selectedIndex = 1; 

देखें लेकिन jQuery मदद कर सकते हैं:

$('#dropdown').selectedIndex = 1; 
+4

यह मान लिया जाता है आप जानते हैं कि जो तत्व वांछित मूल्य नहीं है हो सकता है। यह हमेशा ऐसा नहीं होता है जब सूची गतिशील रूप से उत्पन्न होती है। – tvanfosson

2

मैं, विकल्पों के माध्यम से पुनरावृति होगी मैं क्या चयन किया जाना चाहता हूँ के लिए पाठ की तुलना, फिर वह विकल्प पर चयनित विशेषता निर्धारित किया है। एक बार जब आप सही पाते हैं, तो पुनरावृत्ति को समाप्त करें (जब तक कि आपके पास बहुआयामी न हो)। की तर्ज पर

$('#dropdown').find('option').each(function() { 
     var $this = $(this); 
     if ($this.text() == 'B') { 
     $this.attr('selected','selected'); 
     return false; 
     } 
}); 
+0

क्या $ ('# ड्रॉपडाउन विकल्प') के बजाय .find() का उपयोग करने का कोई कारण है? अधिक कुशल? "Var $ this" सामान भी मुझे गलत लगता है ... –

+1

मुझे लगता है कि अंतर मुख्य रूप से स्टाइलिस्ट है। हुड के तहत मैं उनसे मूल रूप से उसी तरह से काम करने की अपेक्षा करता हूं। एक संग्रह प्राप्त करें, इसे फ़िल्टर करें। मैंने jQuery ऑब्जेक्ट के संदर्भ को पकड़ने के तरीके के रूप में $ का उपयोग करना शुरू कर दिया है। मैंने स्वयं (या $ स्वयं) भी देखा है, लेकिन मुझे लगता है कि यह कम स्पष्ट है। – tvanfosson

0

कुछ ...

$('select option:nth(1)').attr("selected","selected"); 
1

कोड:

var select = function(dropdown, selectedValue) { 
    var options = $(dropdown).find("option"); 
    var matches = $.grep(options, 
     function(n) { return $(n).text() == selectedValue; }); 
    $(matches).attr("selected", "selected"); 
}; 

उदाहरण:

select("#dropdown", "B"); 
10
<select id="cars"> 
<option value='volvo'>volvo</option> 
<option value='bmw'>bmw</option> 
<option value='fiat'>fiat</option> 
</select> 

var make = "fiat"; 

$("#cars option[value='" + make + "']").attr("selected","selected"); 
2

आप danielrmt की .selectedIndex रणनीति का पालन कर सकते हैं, लेकिन विकल्प टैग के भीतर पाठ इस तरह के आधार पर सूचकांक का निर्धारण:

$('#dropdown')[0].selectedIndex = $('#dropdown option').toArray().map(jQuery.text).indexOf('B'); 

यह मूल्य विशेषताओं का उपयोग किये बिना मूल HTML पर काम करता है।

1
$('#select_id option:eq(0)').prop('selected', 'selected'); 

अपनी अच्छी

4

आप JQuery का उपयोग कर रहे हैं, तो 1.6 के बाद से आप का उपयोग करने के लिए है।सहारा() विधि:

$('select option:nth(1)').prop("selected","selected"); 
1

यह एक समाधान

$(document).on('change', 'select', function() { 
      var value = $(this).val(); 
      $(this).find('option[value="' + value + '"]').attr("selected", "selected"); 
     }) 
संबंधित मुद्दे