2010-02-12 7 views
97

ile seçim listesinde olup olmadığını kontrol edin JQuery kullanarak nasıl bir değerin açılır listeye ait olup olmadığını kontrol edebilir miyim?Değer JQuery

cevap

158

Kullanım opsiyonun değeri Javascript üzerinden ayarlanmışsa Attribute Equals Selector

var thevalue = 'foo'; 
var exists = 0 != $('#select-box option[value='+thevalue+']').length; 

, bu işe yaramaz. Bu durumda biz aşağıdakileri yapabilirsiniz:

var exists = false; 
$('#select-box option').each(function(){ 
    if (this.value == 'bar') { 
     exists = true; 
     return false; 
    } 
}); 
+8

açık ikinci bir yaklaşım,da güvenlidir. Doğru CSS kaçınılamadan ham diziden seçici dizeler oluşturmayın. – bobince

+8

Neden "dönüş yanlış"? –

+13

İade false, .each döngüsünü kesmek/sonlandırmak için kullanılır. – Angel

14

Just in case (veya bir başkası) jQuery olmadan yapmak isteyen olabilir: Burada

var exists = false; 
for(var i = 0, opts = document.getElementById('select-box').options; i < opts.length; ++i) 
    if(opts[i].value === 'bar') 
    { 
     exists = true; 
     break; 
    } 
8

başka benzer bir seçenektir. Benim durumumda, bir seçim listesi oluştururken başka bir kutudaki değerleri kontrol ediyorum. Ben karşılaştırmak istiyorsunuz tanımsız değerlere çalışan tuttu, bu yüzden benim onay bu şekilde ayarlayın:

if ($("#select-box option[value='" + thevalue + "']").val() === undefined) { //do stuff } 

bu yaklaşım daha pahalı olup olmadığını bilmiyorum.

4

Neden bir filtre kullanmıyorsunuz? > 0 doğrudur var == 0 yanlıştır bulunduğundan

var thevalue = 'foo';  
var exists = $('#select-box option').filter(function(){ return $(this).val() == thevalue; }).length; 

Gevşek karşılaştırmalar çalışıyorum, bu yüzden sadece

if(exists){ 
    // it is in the dropdown 
} 

kullanmak Ya birleştirebilirsiniz:

if($('#select-box option').filter(function(){ return $(this).val() == thevalue; }).length){ 
    // found 
} 

Veya nerede her açılan kutucukların select-boxes sınıfına sahip olmasının size bu değeri içeren select (ler) inin jquery nesnesini verecektir:

Bu '] ve `\\' de dahil olmak üzere herhangi bir karakter içeren seçenek değerleri sağlar olarak
+0

Bu, en sezgisel yoldur. – Simon

1

if(!$('#select-box').find("option:contains('" + thevalue + "')").length){ 
 
//do stuff 
 
}