好吧,假设我有这个

<select id='list'>
    <option value='1'>Option A</option>
    <option value='2'>Option B</option>
    <option value='3'>Option C</option>
</select>

如果我想在值为“2”时获得“Option B”,选择器会是什么样子?

请注意,这并不是询问如何获取所选文本值,而是询问它们中的任何一个,无论是否被选中,这取决于value属性。我试着:

$("#list[value='2']").text();

但这并不奏效。


当前回答

你可以从下列方法中选择一种

$("#list").find('option').filter('[value=2]').text()

$("#list").find('option[value=2]').text()

$("#list").children('option[value=2]').text()

$("#list option[value='2']").text()

$(function(){ console.log($("#list").find('option').filter('[value=2]').text()); console.log($("#list").find('option[value=2]').text()); console.log($("#list").children('option[value=2]').text()); console.log($("#list option[value='2']").text()); }); <script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> <select id='list'> <option value='1'>Option A</option> <option value='2'>Option B</option> <option value='3'>Option C</option> </select>

其他回答

作为另一种解决方案,你也可以使用jQuery选择器的上下文部分来在下拉列表中找到值="2"的<option>元素:

$("option[value='2']", "#list").text();

我想要得到选定的标签。这在jQuery 1.5.1中是可行的。

$("#list :selected").text();

提示:如果你的值是动态的,你可以使用下面的代码:

$("#list option[value='"+aDynamicValue+"']").text();

或者(更好的风格)

$("#list option").filter(function() {
     return this.value === aDynamicValue;
}).text();

正如在jQuery中提到的,获取特定的选项标签文本并将动态变量放置到值中

我需要这个答案,因为我正在处理一个动态转换的对象,这里的其他方法似乎不工作:

element.options[element.selectedIndex].text

当然,这是使用DOM对象,而不是使用nodeValue、childNodes等解析其HTML。

试试下面的方法:

$("#list option[value=2]").text();

最初的代码片段不能正常工作的原因是OPTION标记是SELECT标记的子标记,SELECT标记具有id列表。