如果您知道索引,值或文本.如果您没有直接参考的ID,也可以.
这个,这个和这都是有用的答案.
示例标记
Grastveit..
1161
按值获取中间option-element的选择器是
$('.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"})
编辑3:请谨慎使用,$(e).text()
因为它可能包含换行符,使比较失败.当隐式关闭选项(无
标记)时会发生这种情况:
如果您只是使用e.text
任何额外的空格,就会删除尾随换行符,从而使比较更加健壮.
1> Grastveit..:
按值获取中间option-element的选择器是
$('.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"})
编辑3:请谨慎使用,$(e).text()
因为它可能包含换行符,使比较失败.当隐式关闭选项(无
标记)时会发生这种情况:
如果您只是使用e.text
任何额外的空格,就会删除尾随换行符,从而使比较更加健壮.
这也是有效的**$('#id option [value ="0"]').attr('selected','selected');**
:包含不是很好,因为它将匹配文本片段; 如果您的任何选项文本是另一个选项文本的子字符串,则会出现问题.
我想补充一下你应该肯定使用道具而不是attr.我几乎疯了,试图调试应用程序并从attr更改为prop修复它.
2> 小智..:
上面没有一种方法提供了我需要的解决方案,所以我想我会提供适合我的方法.
$('#element option[value="no"]').attr("selected", "selected");
请注意,从jQuery 1.6开始,这应该使用`prop`而不是`attr`.
@CarlosLlongo:没关系。jQuery的建议是始终优先使用`prop`而不是`attr`。这样可以省去在w3.org上查找每个属性的麻烦,以查看它是否只是一个属性,或者是通过支持操作实现的。
3> Leandro Ardi..:
你可以使用val()
方法:
$('select').val('the_value');
+1:不,它不是JQuery选择器,但我认为搜索这个问题的大多数人都像我一样,只想改变当前选择的选项; 想出一个真正的选择器只是一种方法.这肯定比我见过的那些让你迭代所有选项的答案更好.
这是错误的,因为您将所有SELECT元素的值设置为`the_value`..val不是选择器/过滤器功能!它是一个属性访问器,并传递它的字符串SETS值.我试图把我的upvote回来,但是在测试之后我把它重新调整了.
请@AaronLS和@guilhermeGeek,参考[docs](http://api.jquery.com/val/)(最后一个例子).它作为选择,复选框和单选按钮的选择器,并作为文本输入和textareas的值设置器.
你误读了文档.对于复选框,无线电和列表框,该命令为这些项设置"selected"属性.最后一个示例显示了传递val("复选框1")如何使其成为选中状态.就通过CSS/jquery选择器获取对象而言,这与"选择器"不同.我测试了你的代码,它不起作用.
你有10票作为有用的答案吗?val()是一个getter和一个setter.如果您只使用val(),您将获得该值.如果你传递val('the_value')这样的东西,你就把它设置为'the_value'
@theUtherSide:我不会总是达成共识.`select`上的`val()`setter是通过设置值匹配的子`选项`的selected属性来实现的,所以确实做了问题所需(*但仅用于值搜索而不是文本搜索)*).