6

所以我有以下 HTML:

<select id="sel">
<option value="0">Option1</option>
<option value="1">Option2</option>
<option value="2">Option3</option>
<option value="3">Option4</option>
</select>

如何检查#sel 是否有基于文本值的选项?(“选项1”)

4

4 回答 4

14

尝试以下操作:

var opt = 'Option1';
if ($('#sel option:contains('+ opt +')').length) {
   alert('This option exists')
}

演示

编辑:上面的代码片段使用 jQuerycontains选择器来过滤其 textContent包含指定值的元素。对于完全匹配,您可以使用 christian-mann's answer 中建议的代码片段。

如何使用 Javascript(不是 jquery)来做到这一点 – Jerry

var optionExists = [].some.call(document.getElementById('sel').options, function(option) {
   return option.textContent === 'value';
});
于 2012-07-24T20:51:29.460 回答
8

jQuery 过滤器函数接受一个函数作为其参数:

$('#sel option').filter(function() { 
    return $(this).text() === "Option1"; 
});
于 2012-07-24T20:52:46.103 回答
2
var length = $('#sel option').filter(function() { 
    return $(this).text() === "Option1"; 
}).length;

if(length == 0)
    console.log('This option text doesn't exist.');
else
    console.log('This option text exists ' + length + ' times.');

如果长度为0,则不存在。我通常不喜欢使用包含,因为它不是完全匹配的。

于 2015-07-31T14:22:19.013 回答
0
var hasOption1=$("option:contains('Option1')", "#sel").length==1; //true or false
于 2012-07-24T20:51:28.087 回答