协慌网

登录 贡献 社区

如何在 jQuery 的 SELECT 元素中选择特定选项?

如果您知道索引,值或文本。如果您没有直接参考的 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');