如果您知道索引、值或文本。如果您没有直接引用的ID。

这、这和这都是有用的答案。

示例标记

<div class="selDiv">
  <select class="opts">
    <option selected value="DEFAULT">Default</option>
    <option value="SEL1">Selection 1</option>
    <option value="SEL2">Selection 2</option>
  </select>
</div>

当前回答

使用jquery-2.1.4,我找到了以下适合我的答案:

$('#MySelectionBox').val(123).change();

如果您有字符串值,请尝试以下操作:

$('#MySelectionBox').val("extra thing").change();

其他例子对我来说不起作用,所以我要加上这个答案。

我在以下位置找到了原始答案:https://forum.jquery.com/topic/how-to-dynamically-select-option-in-dropdown-menu

其他回答

通过值获取中间选项元素的选择器是

$('.selDiv option[value="SEL1"]')

对于索引:

$('.selDiv option:eq(1)')

对于已知文本:

$('.selDiv option:contains("Selection 1")')

编辑:如上所述,OP可能是在更改下拉列表中的选定项目之后。在1.6及更高版本中,建议使用prop()方法:

$('.selDiv option:eq(1)').prop('selected', true)

在旧版本中:

$('.selDiv option:eq(1)').attr('selected', 'selected')

编辑2:瑞安发表评论后。“选择10”上的匹配可能不需要。我找不到与全文匹配的选择器,但过滤器可以工作:

 $('.selDiv option')
    .filter(function(i, e) { return $(e).text() == "Selection 1"})

EDIT3:使用$(e).text()时要小心,因为它可能包含导致比较失败的换行符。当选项隐式关闭(无</option>标记)时,会发生这种情况:

<select ...>
<option value="1">Selection 1
<option value="2">Selection 2
   :
</select>

如果您只使用e.text,任何多余的空格(如尾随换行符)都将被删除,从而使比较更加稳健。

当我知道列表的索引时,我使用这个。

$("#yourlist :nth(1)").prop("selected","selected").change();

这允许列表更改,并触发更改事件。“:n(n)”从索引0开始计数

按值计算,jQuery1.7对我有用的代码如下:

$('#id option[value=theOptionValue]').prop('selected', 'selected').change();

$('select').val('se_value');查找正确的解决方案,如果您有数据表行,则:

$row.find('#component').val('All');
$('#select option[data-id-estado="3"]').prop("selected",true).trigger("change");    
        // or       
$('#select option[value="myValue"]').prop("selected",true).trigger("change");