我有一个包含以下选项的选择:
<select>
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
</select>
我不知道值是什么,但在我的 JQuery 代码中,我想选择选项二,因为我知道文本是 B(但没有别的)。
如何做呢?
我有一个包含以下选项的选择:
<select>
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
</select>
我不知道值是什么,但在我的 JQuery 代码中,我想选择选项二,因为我知道文本是 B(但没有别的)。
如何做呢?
您可以使用:contains()
选择器:
$('option:contains("B")').prop('selected', true);
或者:
$('option')
.filter(function() {
return this.text == 'B';
})
.prop('selected', true);
如果您不确定值是什么,但知道里面的文本是什么,您可以使用:contains()
选择器获取相应的选项,获取其值,然后设置选择。
请注意,:contains()
执行子字符串匹配,因此:contains(foo)
将同时选择<p>foo</p>
和<p>barfoobar</p>
(正如ThiefMaster在评论中指出的那样)。
要对选择进行更精细的控制,您需要.filter()
我在下面提到的选项。
// relevant option
// : not entirely sure if .val() will get an option's value
var _optionval = $('option:contains("B")').attr('value');
// set select value
$('select').val(_optionval);
我根据您对杰克回答的评论分享以下内容。
:contains()
基本上旨在对元素的内容进行匹配。没有绕过那个。
但是,您可以使用类似的东西.filter()
来编写更复杂的代码。
$('option').filter(function () {
// we want the option (or optionS) with text that starts with "foo"
return $(this).text().indexOf('foo') === 0;
// or maybe just something with an exact match
//
// return $(this).text() === 'foo';
});
<select id="select_id">
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
</select>
$("#select_id option").each(function (){
if($(this).text()=='B'){
// DO what you want to
}
});
此代码将在带有文本“B”的选择字段中选择您的任何选项。我想这就是你想要的
试试这个(确保你给你的选择一个 ID,我用过mySelect
):
$("#mySelect").val($("#mySelect:option:contains('B')").val());
$('option').each(function(){
var t=this
if(t.text=='B'){
t.selected='selected';
}
});