2010-02-12 7 views

Répondre

158

Utilisez le Attribute Equals Selector

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

Si la valeur de l'option a été réglée par Javascript, cela ne fonctionnera pas. Dans ce cas, nous pouvons effectuer les opérations suivantes:

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

La deuxième approche explicite est également plus sûr car il permet des valeurs d'option contenant un caractère, y compris ']' et '' \\. Évitez de créer des chaînes de sélecteur à partir du texte brut sans effectuer correctement l'échappement CSS. – bobince

+8

Pourquoi le 'return false'? –

+13

Retour false est utilisé pour rompre/terminer la boucle .each. – Angel

14

Juste au cas où vous (ou quelqu'un d'autre) pourrait être intéressé à le faire sans jQuery:

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

Voici une autre option similaire. Dans mon cas, je vérifie les valeurs dans une autre case lorsque je construis une liste de sélection. Je rencontrais des valeurs non définies quand je comparerais, donc je mets mon chèque ainsi:

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

Je ne sais pas si cette approche est plus cher.

4

Pourquoi ne pas utiliser un filtre?

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

comparaisons desserrées travail parce que existe> 0 est vrai, existe == 0 est faux, de sorte que vous pouvez simplement utiliser

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

Ou combiner:

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

Ou où chaque sélectionnez dropdown a la classe select-boxes cela vous donnera un objet jquery du select (s) qui contiennent la valeur:

var matched = $('.select-boxes option').filter(function(){ return $(this).val() == thevalue; }).parent(); 
+0

Ceci est de la manière la plus intuitive. – Simon

1

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

Questions connexes