[英]Selecting options in a select via JQuery
我有一個選擇,有以下選項:
<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';
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.