下拉菜单使用选项文本获取选项值使用包含方法jquery返回错误值

下拉菜单使用选项文本获取选项值使用包含方法jquery返回错误值,jquery,option,dropdown,Jquery,Option,Dropdown,我的下拉列表如下: <select id="lang" > <option value="1">php</option> <option value="2">java j2ee</option> <option value="3">asp</option> <option value="4">java</option> <

我的下拉列表如下:

<select id="lang" >
       <option value="1">php</option>
       <option value="2">java j2ee</option>
        <option value="3">asp</option>
       <option value="4">java</option>
  </select>
var a = $('#lang option:contains("java")').val();
但我得到的选项值是2而不是4(这是正确的,也是预期的)

我出错了,因为我正在尝试方法
包含
。请指导我如何获得准确的值

您可以使用
.html()
检查内容:

$('#lang option')。每个(函数(){
if($(this.html()=='java'){
警报($(this.val());
}
});

php
java j2ee
asp
JAVA
您可以使用
.html()
检查内容:

$('#lang option')。每个(函数(){
if($(this.html()=='java'){
警报($(this.val());
}
});

php
java j2ee
asp
JAVA

使用
.filter()
的示例

alert($('#lang option').filter(函数(){return$(this.text()=='java'}).val())

php
java j2ee
asp
JAVA

使用
.filter()
的示例

alert($('#lang option').filter(函数(){return$(this.text()=='java'}).val())

php
java j2ee
asp
JAVA

如果要选择具有精确文本的元素,请使用正则表达式

var regex = new RegExp("^java$");
var a = $('#lang option').filter(function () {
    return regex.test($(this).text()); 
}).val();
alert(a);

如果要选择具有精确文本的元素,请使用正则表达式

var regex = new RegExp("^java$");
var a = $('#lang option').filter(function () {
    return regex.test($(this).text()); 
}).val();
alert(a);
JQuery
:contains()
相同。indexOf()
这样做如果使用
,您将得到2,4。each()
JQuery
:contains()
相同。indexOf()
这样做如果使用
,您将得到2,4。each()
或者您可以使用
text()
进行检查。或者您可以使用
text()
进行检查。