如果您知道索引、值或文本。如果您没有直接引用的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>

当前回答

试试这个

您只需使用select字段id而不是#id(即#select_name)

使用选择选项值代替选项值

 <script>
    $(document).ready(function() {
$("#id option[value='option value']").attr('selected',true);
   });
    </script>

其他回答

完全可以,尝试以下方法

对于正常选择选项

<script>    
    $(document).ready(function() {
    $("#id").val('select value here');
       });
        </script>

对于选择2选项,需要使用触发器选项

<script>    
        $(document).ready(function() {
        $("#id").val('select value here').trigger('change');
           });
            </script>

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

$('.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,任何多余的空格(如尾随换行符)都将被删除,从而使比较更加稳健。

您可以只使用val()方法:

$('select').val('the_value');

如果不想使用jQuery,可以使用以下代码:

document.getElementById("mySelect").selectedIndex = "2";

谢谢你的提问。希望这段代码对您有用。

var val = $("select.opts:visible option:selected ").val();