使用jQuery从菜单中选择基于其文本而不是值的选项

时间:2015-09-15 15:16:43

标签: javascript jquery

我有一个像这样的选择菜单

<select>
   <option value="1234567">one</option>
   <option value="7654321">two</option>
</select>

我需要选择一个文本等于'one'的选项(这是动态的并且更改所以我需要能够始终选择与某种文本相关的选项)因此类似于{{ 1}}对我来说不起作用,因为它会查看值属性而不是文本。

2 个答案:

答案 0 :(得分:5)

您可以使用

$('select option:contains("one")')

文档:https://api.jquery.com/contains-selector/

正如@George所说,请注意它与包含 one的任何结果相匹配,包括带有stone一词的

document.write($('select option:contains("one")').val());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<select>
  <option value="123456">one</option>
</select>

答案 1 :(得分:1)

虽然:contains()是上述案例的有效解决方案,但它完全符合您的期望:匹配包含参数的元素,而不是等于它。

:contains("one")会匹配<option>stone</option>以及<option>one</option>

要按照其中的确切文字进行过滤,您可以使用.filter()

var val = $('select option').filter(function(){
    return $(this).text() == 'one';
}).val();

JSFiddle