Which selector do I need to select an option by its text?
Solution 1:
This could help:
$('#test').find('option[text="B"]').val();
Demo fiddle
This would give you the option with text B
and not the ones which has text that contains B
.
For recent versions of jQuery the above does not work. As commented by Quandary below, this is what works for jQuery 1.9.1:
$('#test option').filter(function () { return $(this).html() == "B"; }).val();
Updated fiddle
Solution 2:
You can use the :contains()
selector to select elements that contain specific text.
For example:
$('#mySelect option:contains(abc)')
To check whether a given <select>
element has such an option, use the .has()
method:
if (mySelect.has('option:contains(abc)').length)
To find all <select>
s that contain such an option, use the :has()
selector:
$('select:has(option:contains(abc))')
Solution 3:
None of the previous suggestions worked for me in jQuery 1.7.2 because I'm trying to set the selected index of the list based on the value from a textbox, and some text values are contained in multiple options. I ended up using the following:
$('#mySelect option:contains(' + value + ')').each(function(){
if ($(this).text() == value) {
$(this).attr('selected', 'selected');
return false;
}
return true;
});
Solution 4:
I faced the same issue below is the working code :
$("#test option").filter(function() {
return $(this).text() =='Ford';
}).prop("selected", true);
Demo : http://jsfiddle.net/YRBrp/83/