2012-07-24 55 views
4

所以我有下面这段HTML的:检查如果选择选项存在基于文本的jQuery 1.7

<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”)

+0

发现这个过去的问题,应该为您的问题提供帮助[可能的解决方案](http://stackoverflow.com/questions/2385963/how-do-i-check-if-no-option-is-selected-in -a-selectbox-using-jquery) – 2012-07-24 20:50:34

回答

9

尝试以下方法:

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

Demo

+0

如果选择只有'Option112' – 2012-07-24 20:59:37

+0

@ GRIGORE-TURBODISEL yes,那么将会失败。 – undefined 2012-07-24 21:02:33

0
var hasOption1=$("option:contains('Option1')", "#sel").length==1; //true or false 
+0

如果选择只有'Option112',它会失败 – 2012-07-24 20:59:19

+0

@ GRIGORE-TURBODISEL - 你是否读过这个问题? – adeneo 2012-07-24 21:31:56

+1

我做到了,这就是为什么我没有倒下你的答案。您应该强调,没有严格的比较选择器,应该使用'filter(fn)'来代替。 – 2012-07-24 22:09:24

5

jQuery的滤波器函数接受功能作为它的参数:

$('#sel option').filter(function() { 
    return $(this).text() === "Option1"; 
}); 
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不存在。我通常不喜欢使用包含,因为它不完全匹配。

相关问题