Bunu yapmanın birkaç yolu vardır, ancak en iyi yaklaşımlar en iyi cevaplar ve tartışmalar arasında kaybolmuştur val(). Ayrıca jQuery 1.6'dan bazı yöntemler değişti, bu yüzden bir güncelleme gerekiyor.
Aşağıdaki örnekler için, değişkenin $selectistenen <select>etiketi, örneğin aşağıdakileri gösteren bir jQuery nesnesi olduğunu varsayacağım :
var $select = $('.selDiv .opts');
Not 1 - değer eşleşmeleri için val () kullanın:
Değer eşleme için, val()kullanmak bir özellik seçici kullanmaktan çok daha kolaydır: https://jsfiddle.net/yz7tu49b/6/
$select.val("SEL2");
Ayarlayıcı sürümü .val(), selectetiketlere aynı selectedeşleşmenin özelliği ayarlanarak uygulanıroptionvalue , yani tüm modern tarayıcılarda gayet güzel çalışıyor.
Not 2 - pervane kullanın ('seçili', doğru):
Bir seçeneğin seçilen durumunu doğrudan ayarlamak istiyorsanız, prop(değil attr) bir booleanparametreyle (metin değeri yerine ) kullanabilirsiniz.selected :
örneğin, https://jsfiddle.net/yz7tu49b/
$option.prop('selected', true); // Will add selected="selected" to the tag
Not 3 - bilinmeyen değerlere izin ver:
Bir val()seçmek için kullanırsanız <option>, ancak val eşleşmezse (değerlerin kaynağına bağlı olarak gerçekleşebilir), "hiçbir şey" seçilir ve $select.val()geri dönernull .
Yani, gösterilen örnek için ve sağlamlık uğruna, böyle bir şey kullanabilirsiniz https://jsfiddle.net/1250Ldqn/ :
var $select = $('.selDiv .opts');
$select.val("SEL2");
if ($select.val() == null) {
$select.val("DEFAULT");
}
Not 4 - tam metin eşleşmesi:
Tam metne göre eşleştirmek istiyorsanız, filterwith işlevini kullanabilirsiniz . örneğin, https://jsfiddle.net/yz7tu49b/2/ :
var $select = $('.selDiv .opts');
$select.children().filter(function(){
return this.text == "Selection 2";
}).prop('selected', true);
ek boşluk varsa, çeke olduğu gibi bir kırpma eklemek isteyebilirsiniz
return $.trim(this.text) == "some value to match";
Not 5 - dizine göre eşleme
Eğer indekse göre eşleştirmek istiyorsanız sadece seçili çocukları indeksleyin örn. Https://jsfiddle.net/yz7tu49b/3/
var $select = $('.selDiv .opts');
var index = 2;
$select.children()[index].selected = true;
Bugünlerde jQuery lehine doğrudan DOM özelliklerinden kaçınmaya rağmen, geleceğe yönelik koda, bu yüzden https://jsfiddle.net/yz7tu49b/5/ olarak da yapılabilir :
var $select = $('.selDiv .opts');
var index = 2;
$select.children().eq(index).prop('selected', true);
Not 6 - yeni seçimi başlatmak için change () öğesini kullanın
Yukarıdaki tüm durumlarda, change olayı başlatılmaz. Bu tasarım gereğidir, böylece özyinelemeli değişiklik olaylarıyla uğraşmazsınız.
Değişiklik olayını oluşturmak için gerekirse .change()jQuery selectnesnesine bir çağrı ekleyin . Örneğin, en basit örnek https://jsfiddle.net/yz7tu49b/7/ olur
var $select = $('.selDiv .opts');
$select.val("SEL2").change();
Özellik seçicileri kullanarak öğeleri bulmanın başka yolları da vardır [value="SEL2"], ancak özellik seçicilerinin diğer tüm seçeneklere kıyasla nispeten yavaş olduğunu hatırlamanız gerekir.
$("#my_select").val("the_new_value").change();... ... so