JQuery में <select> का चयन रद्द करने का सबसे अच्छा तरीका है?


219
<select size="2">
<option selected="selected">Input your option</option>
<option>Input your option</option>
</select>

सबसे अच्छा तरीका क्या है, विकल्प को सुंदर ढंग से अचयनित करने के लिए jQuery का उपयोग करना?

जवाबों:


348

RemoveAttr का उपयोग करें ...

$("option:selected").removeAttr("selected");

या प्रोप

$("option:selected").prop("selected", false)

3
IE 8 के तहत काम नहीं करता है। देखें stackoverflow.com/questions/7960773/…
क्लिंटन पियर्स

60
यह उत्तर चीजों को करने का तरीका नहीं है (और बूट करने के लिए सार्वभौमिक रूप से काम नहीं करता है)। सही दृष्टिकोण .val([])या तो हैं .prop("selected", false)- या नीचे स्क्रॉल करें।
जॉन

1
JQuery ने इसे ठीक कर लिया है, यह IE8 में मेरे लिए एकदम सही काम कर रहा है।
मिकी जी

2
या .val (['']) यदि कोई हो तो रिक्त मान का चयन करें।
मार्क

2
$("option:selected").prop("selected", false)कभी-कभी काम नहीं कर रहा है। (jquery v1.4.2 के साथ क्रोम ब्राउज़र में काम नहीं कर रहा है)
रोहित गोयानी

163

यहाँ बहुत सारे उत्तर हैं लेकिन दुर्भाग्य से वे सभी काफी पुराने हैं और इसलिए उन पर निर्भर हैं attr/ removeAttrजो वास्तव में जाने का रास्ता नहीं है।

@coffeeyesplease सही उल्लेख करता है कि एक अच्छा, क्रॉस-ब्राउज़र समाधान का उपयोग करना है

$("select").val([]);

एक और अच्छा क्रॉस-ब्राउज़र समाधान है

// Note the use of .prop instead of .attr
$("select option").prop("selected", false);

आप इसे यहां एक आत्म-परीक्षण चलाने के लिए देख सकते हैं । IE 7/8/9, FF 11, Chrome 19 पर परीक्षण किया गया।


1
चुनिंदा उत्तर से बहुत बेहतर, (क्रॉस ब्राउज़र पर काम करता है और इसमें विशेषता सेट्स के साथ खिलवाड़ नहीं होता है)
टिमोथी ग्रोट

1
सभी विकल्पों को अचयनित करने के लिए सही उत्तर । लेकिन यह वास्तव में विशिष्ट विकल्पों को अचयनित करने के लिए इस्तेमाल नहीं किया जा सकता है, जबकि removeAttr कर सकते हैं।
मिकी जी

2
@ मायकेजी: यह , यह देखते हुए कि Array.indexOfआईई 9 के लिए एक पॉलीफ़िल की आवश्यकता है (या आप किसी भी जेएस पुस्तकालयों को प्रदान करने वाले किसी भी समकक्ष विधि का उपयोग कर सकते हैं)।
जॉन

1
क्या आपने HTML की जांच की थी $('#select').val([]);? दुर्भाग्य से, यह selected="selected"विशेषता को दूर नहीं करता है । वह गलत डेटा पोस्ट करना समाप्त कर सकता है। मैं इस दृष्टिकोण की सिफारिश नहीं करता हूं!
19

1
@ Fr0zenFyr: यदि आप एक preselected विकल्प के साथ शुरू करते हैं और आप इसे माउस क्लिक के साथ मैन्युअल रूप से अचयनित करते हैं, तो यह विशेषता को हटाता नहीं है - और निश्चित रूप से फॉर्म सबमिट करने से सही डेटा पोस्ट करने की गारंटी है। HTML विशेषताओं (जो प्रारंभिक स्थिति निर्धारित करती है) और DOM गुणों के बीच अंतर की एक दुनिया है (जो यह निर्धारित करती है कि क्या प्रदर्शित करता है और क्या जमा होता है)। यह वास्तव में यही कारण है कि विशेषता पर ध्यान केंद्रित करने वाले समाधान गलत हैं। गुण संपत्ति के प्रारंभिक मूल्य को निर्धारित करता है, लेकिन यह जहां तक ​​जाता है।
जॉन

24

यह पूछे जाने के बाद से एक समय हो गया है, और मैंने पुराने ब्राउज़रों पर इसका परीक्षण नहीं किया है, लेकिन यह मुझे बहुत सरल उत्तर लगता है

$("#selectID").val([]);

.val () सेलेक्ट के लिए भी काम करता है http://api.jquery.com/val/


यह सबसे अच्छा तरीका है और वास्तव में अधिकांश ब्राउज़रों में मूल्य को साफ करता है - धन्यवाद।
सगिव एसईओ

यह केवल बहु-चयन के लिए काम करता है। $("select option").prop("selected", false);सार्वभौमिक रूप से (बहु और एकल चयनों पर) काम करता है।
छप

23

सरलतम विधि

$('select').val('')

मैं बस चयन पर इस का इस्तेमाल किया और यह चाल चली।

मैं jQuery 1.7.1 पर हूं ।


1
मुझे इस समाधान के बारे में सिर्फ एक समस्या का सामना करना पड़ा। विकल्प टैग में अभी भी "चयनित" विशेषता होगी
तमारा

@ तमारा वास्तव में? मैंने जाँच नहीं की। क्या आप किसी चीज़ के लिए "चयनित" का उपयोग कर रहे हैं और यह आपके लिए चीजों को गड़बड़ कर रहा है?
जोशुआ पिंटर

19

उत्तर अब तक केवल IE6 / 7 में कई चयनों के लिए काम करते हैं; अधिक सामान्य गैर-बहु चयन के लिए, आपको उपयोग करने की आवश्यकता है:

$("#selectID").attr('selectedIndex', '-1');

यह फ्लाईफिश 64 द्वारा लिंक किए गए पोस्ट में बताया गया है। यदि आप इसे देखते हैं, तो आप देखेंगे कि कैसे 2 मामले हैं - बहु / गैर-बहु। पूर्ण समाधान के लिए दोनों का जप करने से कुछ नहीं होता है:

$("#selectID").attr('selectedIndex', '-1').find("option:selected").removeAttr("selected");

7

ओह जीकरी।

चूंकि अभी तक एक देशी जावास्क्रिप्ट दृष्टिकोण है, इसलिए मुझे एक प्रदान करने की आवश्यकता महसूस होती है।

var select = document.querySelector('select'); //hopefully you'll use a better selector query
select.selectedIndex = 0; // or -1, 0 sets it to first option, -1 selects no options

और बस आपको यह दिखाने के लिए कि यह कितना तेज है: बेंचमार्क


JQuery के बिना इस उत्तर के लिए धन्यवाद! :)
सरोमसे

6
$("#selectID option:selected").each(function(){
  $(this).removeAttr("selected");
});

यह प्रत्येक आइटम के माध्यम से पुनरावृत्ति करेगा और केवल उन लोगों को अचयनित करेगा, जिनकी जाँच की जाती है


5

एक त्वरित Google ने इस पोस्ट को पाया जो यह बताता है कि IE में एकल और एकाधिक चयन सूची दोनों के लिए आपको क्या करना है। समाधान बहुत ही सुंदर लगता है:

$('#clickme').click(function() {
        $('#selectmenu option').attr('selected', false);

}); 



3

समाधान के लिए बहुत बहुत धन्यवाद।

एकल विकल्प कॉम्बो सूची के लिए समाधान पूरी तरह से काम करता है। मैंने कई साइटों पर खोज करने के बाद यह पाया।

$("#selectID").attr('selectedIndex', '-1').children("option:selected").removeAttr("selected");



1

आमतौर पर जब मैं एक चयन मेनू का उपयोग करता हूं, तो प्रत्येक विकल्प के साथ एक मूल्य जुड़ा होता है। उदाहरण के लिए

<select id="nfl">
  <option value="Bears Still...">Chicago Bears</option>
  <option selected="selected" value="Go Pack">Green Bay Packers</option>
</select>
console.log($('#nfl').val()) logs "Go Pack" to the console
Set the value to an empty string $('#nfl').val("")
console.log($('#nfl').val()) logs "" to the console

अब यह विकल्प से चयनित विशेषता को नहीं हटाता है, लेकिन मैं वास्तव में चाहता हूं कि मूल्य है।


0

अपने चयन में एक आईडी सेट करें, जैसे:
<select id="foo" size="2">

तो आप का उपयोग कर सकते हैं:
$("#foo").prop("selectedIndex", 0).change();

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