如果您知道索引,值或文本。如果您没有直接参考的 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>
通过值获取中间选项元素的选择器是
$('.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')
EDIT2 :在 Ryan 发表评论之后。 “选择 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
则将删除多余的空格(例如结尾的换行符),从而使比较更加可靠。
上面的方法都没有提供我需要的解决方案,所以我认为我会提供对我有用的方法。
$('#element option[value="no"]').attr("selected", "selected");
您可以只使用val()
方法:
$('select').val('the_value');