簡體   English   中英

通過JQuery選擇選項中的選項

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM