jQuery: configuración del valor seleccionado de un control de selección a través de su descripción de texto
Tengo un control de selección y en una variable de JavaScript tengo una cadena de texto.
Usando jQuery quiero configurar el elemento seleccionado del control de selección para que sea el elemento con la descripción de texto que tengo (a diferencia del valor, que no tengo).
Sé que configurarlo por valor es bastante trivial. p.ej
$("#my-select").val(myVal);
Pero estoy un poco perplejo al hacerlo a través de la descripción del texto. Supongo que debe haber una manera de extraer el valor de la descripción del texto, pero mi cerebro está demasiado ocupado el viernes por la tarde para poder resolverlo.
Seleccionar por descripción para jQuery v1.6+
var text1 = 'Two';
$("select option").filter(function() {
//may want to use $.trim in here
return $(this).text() == text1;
}).prop('selected', true);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select>
<option value="0">One</option>
<option value="1">Two</option>
</select>
Versiones de jQuery inferiores a 1.6 y superiores o iguales a 1.4
var text1 = 'Two';
$("select option").filter(function() {
//may want to use $.trim in here
return $(this).text() == text1;
}).attr('selected', true);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
<select>
<option value="0">One</option>
<option value="1">Two</option>
</select>
Tenga en cuenta que, si bien este enfoque funcionará en versiones superiores a 1.6 pero inferiores a 1.9, ha quedado obsoleto desde 1.6. No funcionará en jQuery 1.9+.
Versión anterior
val()
debería manejar ambos casos.
$('select').val('1'); // selects "Two"
$('select').val('Two'); // also selects "Two"
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<select>
<option value="0">One</option>
<option value="1">Two</option>
</select>
No lo he probado, pero podría funcionar para ti.
$("select#my-select option")
.each(function() { this.selected = (this.text == myVal); });