<select size="2">
<option selected="selected">Input your option</option>
<option>Input your option</option>
</select>
Seçeneği zarifçe kaldırmak için jQuery'i kullanmanın en iyi yolu nedir?
<select size="2">
<option selected="selected">Input your option</option>
<option>Input your option</option>
</select>
Seçeneği zarifçe kaldırmak için jQuery'i kullanmanın en iyi yolu nedir?
Yanıtlar:
RemoveAttr kullanın ...
$("option:selected").removeAttr("selected");
Veya Prop
$("option:selected").prop("selected", false)
.val([])
ya .prop("selected", false)
- veya aşağı kaydır.
$("option:selected").prop("selected", false)
bazen çalışmıyor. (jquery v1.4.2 ile krom tarayıcıda çalışmıyor)
Burada birçok cevap var ama ne yazık ki hepsi oldukça eski ve bu nedenle güveniyor attr
/ removeAttr
hangi gerçekten gitmek için yol değil.
@coffeeyesplease, iyi bir çapraz tarayıcı çözümünün
$("select").val([]);
Başka bir iyi çapraz tarayıcı çözümü
// Note the use of .prop instead of .attr
$("select option").prop("selected", false);
Burada kendi kendini test ettiğini görebilirsiniz . IE 7/8/9, FF 11, Chrome 19 üzerinde test edilmiştir.
Array.indexOf
IE <9 için bir polyfill ihtiyacı (veya birçok JS kütüphaneleri sağladığını herhangi eşdeğer yöntemini kullanabilirsiniz).
$('#select').val([]);
mi? Ne yazık ki, bu selected="selected"
özellik kaldırılmaz . Sonuç olarak yanlış veri gönderebilir. Bu yaklaşımı önermiyorum!
Sorulmasından bu yana bir süre geçti ve bunu eski tarayıcılarda test etmedim, ancak bana göre çok daha basit bir cevap
$("#selectID").val([]);
.val () seçim için de çalışır http://api.jquery.com/val/
$("select option").prop("selected", false);
evrensel olarak çalışır (çoklu ve tekli seçimlerde).
$('select').val('')
Ben sadece seçim kendisi üzerinde kullandım ve hile yaptı.
Hattayım jQuery 1.7.1 .
Şimdiye kadar cevaplar sadece IE6 / 7'de birden fazla seçim için çalışıyor; daha yaygın olan çoklu seçim için şunları kullanmanız gerekir:
$("#selectID").attr('selectedIndex', '-1');
Bu, flyfishr64 ile bağlantılı yazıda açıklanmaktadır. Eğer bakarsanız, 2 durumun nasıl olduğunu göreceksiniz - çoklu / çoklu olmayan. Her ikisini de eksiksiz bir çözüm için değiştirmeyi durduran hiçbir şey yoktur:
$("#selectID").attr('selectedIndex', '-1').find("option:selected").removeAttr("selected");
Oh jquery.
Henüz yerel bir javascript yaklaşımı olduğundan, bir tane sağlama ihtiyacını hissediyorum.
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
Ve sadece sana göstermek için bu ne kadar hızlı: kriter
Hızlı bir google, bu yayını IE'de hem tekli hem de çoklu seçim listeleri için ne yapacağınızı açıklayan buldu . Çözüm de oldukça zarif görünüyor:
$('#clickme').click(function() {
$('#selectmenu option').attr('selected', false);
});
$(option).removeAttr('selected') //replace 'option' with selected option's selector
Çözüm için çok teşekkürler.
Tek seçim kombo listesi için çözüm mükemmel çalışıyor. Bunu birçok sitede aradıktan sonra buldum.
$("#selectID").attr('selectedIndex', '-1').children("option:selected").removeAttr("selected");
$("option:selected").attr("selected", false);
Genellikle bir seçim menüsü kullandığımda, her seçeneğin kendisiyle ilişkilendirilmiş bir değeri vardır. Örneğin
<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
Şimdi bu seçili özniteliği seçenekten kaldırmaz ama gerçekten istediğim değerdir.
Seçiminizde aşağıdakine benzer bir kimlik belirleyin:
<select id="foo" size="2">
Sonra şunları kullanabilirsiniz:
$("#foo").prop("selectedIndex", 0).change();