2012-04-18 8 views
104
$('#mySelectBox option').each(function() { 
    if ($(this).isChecked()) 
     alert('this option is selected'); 
    else 
     alert('this is not'); 
}); 

जाहिर है, isChecked काम नहीं करता है। तो मेरा सवाल यह है कि ऐसा करने का सही तरीका क्या है? धन्यवाद।यह कैसे जांचें कि कोई विकल्प चुना गया है या नहीं?

+2

00zebra00, वें के बीच उत्तर ढूंढना के लिए धन्यवाद ई नीचे कई विकल्प। हालांकि, कृपया चयनित संपत्ति तक पहुंचने के लिए 'सर्वश्रेष्ठ' तरीके के बारे में नीचे दी गई टिप्पणियों में बातचीत का ध्यान रखना सुनिश्चित करें। सामान्य बात यह है कि जब आप जावास्क्रिप्ट में सीधे तत्व का उपयोग कर सकते हैं ('this.selected' का उपयोग करके) कि आपको jQuery (' $ (this) .prop ("चयनित") का उपयोग करके बाईपास करना चाहिए, लेकिन वे आपके लिए दोनों काम करेंगे । – veeTrain

+0

[jQuery के संभावित डुप्लिकेट ड्रॉपडाउन से चयनित विकल्प प्राप्त करें] (https://stackoverflow.com/questions/10659097/jquery-get-selected-option-from-dropdown) –

उत्तर

181

अद्यतन

चयनित विकल्प के लिए एक और अधिक प्रत्यक्ष jQuery तरीका होगा:

$('#mySelectBox option').each(function() { 
    if($(this).is(':selected')) ... 

गैर:

var selected_option = $('#mySelectBox option:selected'); 

प्रश्न का उत्तर देना .is(':selected') आप के लिए क्या देख रहे है jQuery (तर्कसंगत रूप से सर्वोत्तम अभ्यास) ऐसा करने का तरीका होगा:

$('#mySelectBox option').each(function() { 
    if(this.selected) ... 

हालांकि, अगर आप सिर्फ चयनित मान कोशिश की तलाश कर रहे:

$('#mySelectBox').val() 

आपके द्वारा चयनित मूल्य के पाठ के लिए देख रहे हैं कार्य करें:

$('#mySelectBox option').filter(':selected').text(); 

चेक आउट: http://api.jquery.com/selected-selector/

अगली बार डुप्लिकेट के लिए देखें SO प्रश्न:

Get current selected option या Set selected option या How to get $(this) selected option in jQuery? या option[selected=true] doesn't work

+0

यह किसी भी अच्छे कारण के लिए jQuery का उपयोग करता है। देशी जेएस डोम गुणों का उपयोग करें। [इस] पर एक नज़र डालें (http://stackoverflow.com/a/10213695/601179) – gdoron

+3

ऐसा लगता है कि आपने मेरा जवाब नहीं पढ़ा। 'this.selected' का उपयोग' $ (this) .is (": चुना गया") के बजाय किया जा सकता है। मुझे लगता है कि इसके लिए jsperf की आवश्यकता नहीं है, है ना? मेरे पास jQuery का उपयोग करने के खिलाफ कुछ भी नहीं है, लेकिन जब आपको इसकी ज़रूरत होती है तो इसका इस्तेमाल करें, न कि जब यह ओवरहेड और अधिक कोड के अलावा कुछ भी नहीं देता है। – gdoron

+0

@gdoron 'this.selected' पूरी तरह मान्य है लेकिन उसने इसे करने के लिए उचित jQuery तरीके से पूछा। – iambriansreed

21

आप कर सकते हैं चयनित विकल्प इस तरह से मिलता है:

$('#mySelectBox option:selected')... 

LIVE DEMO

लेकिन आप सभी विकल्पों को पुनरावृति करना चाहते हैं,के बजाय this.selected के साथ ऐसा करें 0 जो मौजूद नहीं है:

$('#mySelectBox option').each(function() { 
    if (this.selected) 
     alert('this option is selected'); 
    else 
     alert('this is not'); 
}); 

LIVE DEMO

अद्यतन:

आप इस का उपयोग करने का सुझाव दे जवाब के बहुत सारे मिल गया:

$(this).is(':selected') अच्छी तरह से, यह एक किया जा सकता है this.selected के साथ बहुत तेज़ और आसान तो आप इसका उपयोग क्यों करें, न कि देशी डीओएम तत्व विधि ?!

पढ़ें आपका डोम गुण और कार्य पता jQuerytag info

+1

@downvoter पर टिप्पणी करना अनिवार्य है, टिप्पणी करने की परवाह है?रंगों से बाहर निकलें और लड़ाई! :) – gdoron

+0

शायद क्योंकि आपने सवाल का जवाब नहीं दिया लेकिन सर्वोत्तम अभ्यास दिया। ;) – iambriansreed

+1

@iambriansreed। हा ?! मैंने सवाल का जवाब नहीं दिया? ** प्रश्न में कौन सा हिस्सा अनुत्तरित रहा? ** – gdoron

2

में आप परिचित या is() के साथ सहज नहीं हैं, तो आप सिर्फ prop("selected") के मान की जाँच कर सकते हैं।

As seen here:

$('#mySelectBox option').each(function() { 
    if ($(this).prop("selected") == true) { 
     // do something 
    } else { 
     // do something 
    } 
});​ 

संपादित:

रूप @gdoron टिप्पणी में कहा, तेजी से और सबसे उपयुक्त तरीका एक विकल्प के चयनित संपत्ति का उपयोग करने के डोम चयनकर्ता के माध्यम से है। इस क्रिया को प्रदर्शित करने वाले पहेली update यहां है।

if (this.selected == true) { 

बस काम करने लगता है! धन्यवाद gdoron।

+0

क्या आप कृपया मुझे समझा सकते हैं कि उसे '$ (यह) .prop (" चयनित ")' ' यह। चयनित '? यह आपको क्या देता है ?? अनुलेख मैं डाउनवॉटर नहीं हूं ... – gdoron

+0

@gdoron, मुख्य लाभ जो मैंने सोचा था परिचित था। मुझे यकीन नहीं है कि 'is' का सबसे अच्छा उपयोग क्यों किया जाता है लेकिन मुझे प्रोप और एटीआर द्वारा अपनी गुणों को एक्सेस करना पसंद है। ज्यादातर परिदृश्यों में यह सिर्फ स्वाद का मामला हो सकता है। हां, डाउन-वोटिंग का उत्सुकता है! – veeTrain

+2

मैं आपको 'jQuery' [टैग जानकारी] (http://stackoverflow.com/tags/jquery/info) का हिस्सा ** ** अपने डोम गुणों और कार्यों को जानने के लिए सुझाव देता हूं। सरल चीज़ करने के लिए धीमे कोड + अधिक कोड का उपयोग करने का कोई कारण नहीं है। '.is() 'का उपयोग जटिल चयनकर्ता के लिए' $ (...) जैसे किया जाना चाहिए। (' foo> [name = "aaa"] इनपुट ') या उन गुणों के लिए जो मूल DOM तत्व गुण नहीं हैं जैसे $ $ । (": visiable") (...) है। – gdoron

1

उपयोग

$("#mySelectBox option:selected"); 

अगर इसकी एक विशेष विकल्प myoption परीक्षण करने के लिए:

if($("#mySelectBox option:selected").text() == myoption){ 
      //... 
} 
+0

ने आपको डाउनवोट नहीं किया है (यहां एक सीरियल डाउनवॉट्स है!) लेकिन 'मायोपशन' क्या है ??? – gdoron

+0

केवल एक स्ट्रिंग जो एक उदाहरण विकल्प माना जाता है जिसे ओपी परीक्षण करना चाहता है अगर उसका चयन –

+0

डाउनवोट के संबंध में है, तो आप [मेरे उत्तर] के तहत टिप्पणियां पढ़ना चाहेंगे (http://stackoverflow.com/a/ 10213695/601179)। – gdoron

0

मेरे मामले में मैं क्यों चयनित नहीं जानता कि हमेशा सच है। तो एक ही रास्ता मैं लगता है कि करने में सक्षम था है:

var optionSelected = false; 
$('#select_element option').each(function(i, el) { 
    var optionHTMLStr = el.outerHTML; 

    if (optionHTMLStr.indexOf('selected') > 0) { 
     optionSelected = true; 
     return false; 
    } 
}); 
0

आप केवल तब एक विकल्प चुना जाता है, तो आप सभी विकल्पों के माध्यम से पुनरावृति की जरूरत नहीं है जाँच करना चाहते हैं। बस करना

if($('#mySelectBox').val()){ 
    // do something 
} else { 
    // do something else 
} 

नोट: यदि आप मूल्य के साथ एक विकल्प है, तो = 0 है कि आप चयन होना चाहते हैं, तो आप $('#mySelectBox').val() != null

0

के लिए अगर-हालत बदलने के लिए अपने चयन सूची के रूप में इस पर विचार करें की जरूरत है:

इस तरह
<select onchange="var optionVal = $(this).find(':selected').val(); doSomething(optionVal)"> 

           <option value="mostSeen">Most Seen</option> 
           <option value="newst">Newest</option> 
           <option value="mostSell">Most Sell</option> 
           <option value="mostCheap">Most Cheap</option> 
           <option value="mostExpensive">Most Expensive</option> 

          </select> 

तो आपके द्वारा चयनित विकल्प की जाँच करें:

function doSomething(param) { 

    if ($(param.selected)) { 
     alert(param + ' is selected!'); 
    } 

} 

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

  • कोई संबंधित समस्या नहीं^_^