如果您知道索引、值或文本。如果您没有直接引用的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>
回答我自己的文档问题。我确信还有其他方法可以实现这一点,但这是可行的,并且这段代码经过了测试。
<html>
<head>
<script language="Javascript" src="javascript/jquery-1.2.6.min.js"></script>
<script type="text/JavaScript">
$(function() {
$(".update").bind("click", // bind the click event to a div
function() {
var selectOption = $('.selDiv').children('.opts') ;
var _this = $(this).next().children(".opts") ;
$(selectOption).find("option[index='0']").attr("selected","selected");
// $(selectOption).find("option[value='DEFAULT']").attr("selected","selected");
// $(selectOption).find("option[text='Default']").attr("selected","selected");
// $(_this).find("option[value='DEFAULT']").attr("selected","selected");
// $(_this).find("option[text='Default']").attr("selected","selected");
// $(_this).find("option[index='0']").attr("selected","selected");
}); // END Bind
}); // End eventlistener
</script>
</head>
<body>
<div class="update" style="height:50px; color:blue; cursor:pointer;">Update</div>
<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>
</body>
</html>
通过值获取中间选项元素的选择器是
$('.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,任何多余的空格(如尾随换行符)都将被删除,从而使比较更加稳健。