¿Cómo seleccionar una opción por su texto?

Necesito comprobar si un tiene una opción cuyo texto es igual a un valor específico.

Por ejemplo, si hay un abc , estaría buscando “abc”.

¿Hay un selector para hacer esto?

Estoy buscando algo similar a $('#select option[value="123"]'); pero para el texto.

Esto podría ayudar:

 $('#test').find('option[text="B"]').val(); 

Demo violín

Esto le daría la opción con el texto B y no con el texto que contiene B Espero que esto ayude

Para las versiones recientes de jQuery, lo anterior no funciona. Como lo comentó Quandary a continuación, esto es lo que funciona para jQuery 1.9.1:

 $('#test option').filter(function () { return $(this).html() == "B"; }).val(); 

Fiddle actualizado

Puede usar el selector :contains() para seleccionar elementos que contienen texto específico.
Por ejemplo:

 $('#mySelect option:contains(abc)') 

Para verificar si un elemento tiene dicha opción, use el método .has() :

 if (mySelect.has('option:contains(abc)').length) 

Para encontrar todos los s que contienen dicha opción, use el selector : :has() :

 $('select:has(option:contains(abc))') 

Ninguna de las sugerencias anteriores funcionó para mí en jQuery 1.7.2 porque estoy tratando de establecer el índice seleccionado de la lista en función del valor de un cuadro de texto, y algunos valores de texto están contenidos en varias opciones. Terminé usando lo siguiente:

 $('#mySelect option:contains(' + value + ')').each(function(){ if ($(this).text() == value) { $(this).attr('selected', 'selected'); return false; } return true; }); 

Esto funcionó para mí: $("#test").find("option:contains('abc')");

Me enfrenté al mismo problema a continuación es el código de trabajo:

 $("#test option").filter(function() { return $(this).text() =='Ford'; }).prop("selected", true); 

Demostración: http://jsfiddle.net/YRBrp/83/

Este es el mejor método para seleccionar texto en la lista desplegable.

 $("#dropdownid option:contains(your selected text)").attr('selected', true); 

Intenté algunas de estas cosas hasta que obtuve una para trabajar tanto en Firefox como en IE. Esto es lo que se me ocurrió.

 $("#my-Select").val($("#my-Select" + " option").filter(function() { return this.text == myText }).val()); 

otra forma de escribirlo en un fasion más legible:

 var valofText = $("#my-Select" + " option").filter(function() { return this.text == myText }).val(); $(ElementID).val(valofText); 

Pseudocódigo:

 $("#my-Select").val( getValOfText( myText ) ); 

Use la siguiente

 $('#select option:contains(ABC)').val(); 

Esto funcionará en jQuery 1.6 (note dos puntos antes del paréntesis de apertura), pero falla en las versiones más recientes (1.10 en ese momento).

 $('#mySelect option:[text=abc]") 

Para jquery versión 1.10.2 a continuación funcionó para mí

  var selectedText="YourMatchText"; $('#YourDropdownId option').map(function () { if ($(this).text() == selectedText) return this; }).attr('selected', 'selected'); }); 

Este trabajo para mí

 $('#mySelect option:contains(' + value + ')').attr('selected', 'selected'); 

O itera a través de las opciones, o coloca el mismo texto dentro de otro atributo de la opción y selecciona con eso.

Esto también funcionará.

$ (‘# test’). find (“select option: contains (‘B’)”). filter (“: selected”);

Como se describe en esta respuesta , puede crear fácilmente su propio selector para hasText. Esto le permite encontrar la opción con $('#test').find('option:hastText("B")').val();

Aquí está el método hasText que agregué:

  if( ! $.expr[':']['hasText'] ) { $.expr[':']['hasText'] = function( node, index, props ) { var retVal = false; // Verify single text child node with matching text if( node.nodeType == 1 && node.childNodes.length == 1 ) { var childNode = node.childNodes[0]; retVal = childNode.nodeType == 3 && childNode.nodeValue === props[3]; } return retVal; }; } 

Esto funciona para mí

 var options = $(dropdown).find('option'); var targetOption = $(options).filter( function () { return $(this).html() == value; }); console.log($(targetOption).val()); 

Gracias por todas las publicaciones.