2011-01-21 1 views

risposta

37

uso :contains()(link)

$("select option:contains(text)").attr('selected', true); 

demo

+0

Se è necessario eseguire una variabile: var text = "Elemento 1"; $ ("seleziona opzione: contiene (" + testo + ")"). Attr ('selezionato', vero); – ROFLwTIME

+5

Funziona bene a meno che tu non abbia oggetti simili. Ad esempio, se si cerca "item" e le opzioni sono "item 1", "item 2", ecc. Allora si otterrà più di un risultato – PostureOfLearning

+3

con le versioni più recenti di jquery (1.6.1+?), Usare il puntello ('selezionato', vero) invece di attr ('selezionato', vero) – dlo

9

C'è una filter function on jQuery che è possibile utilizzare per ottenere elementi con qualcosa di più specifico

$("select option").filter(function() { 
    return $(this).text() == "text_to_select"; 
}); 

Questo sta per tornare tutte le opzioni con il "text_to_select" nel testo.

+0

Questa dovrebbe essere la risposta accettata. L'utilizzo di "contiene" potrebbe corrispondere a diversi valori, che potrebbero essere pericolosi. –

2

penso che questo farà il trucco per voi ...

$("#selectId").find("option:contains('text')").each(function(){ 
    if($(this).text() == 'Text that should be matched') { 
    $(this).attr("selected","selected"); 
    } 
}); 
0

Ecco il codice che uso (non è proprio la stessa cosa come il altri suggerimenti qui e funziona con jQuery v1.8.3)

var userToSearchFor = 'mike'; // Select any options containing this text 

$("#ListOfUsers").find("option:contains('" + userToSearchFor +"')").each(function() { 
    $(this).attr("selected", "selected"); 
}); 

<select id="ListOfUsers" ></select> 

Spero che questo aiuti.

0

Ho avuto uno scenario simile con elenchi a discesa per paese, stato e città. Il Paese aveva "India" e "Territorio britannico dell'Oceano Indiano". Il problema con :contains() è che tenta su entrambe le corrispondenze. Ho fatto qualcosa di simile:

$('#country option').each(function(){ 
    if($(this).text() == 'India'){ 
     $(this).prop('selected', true).trigger('change'); 
    } 
}); 
0
$("selecter option:contains('" + data[i].ID+ "')").attr('selected', 'selected');