我有一个选择字段,其中有一些选项。现在我需要用jQuery选择其中一个选项。但是,当我只知道必须选择的选项的值时,我该怎么做呢?

我有以下HTML:

<div class="id_100">
  <select>
    <option value="val1">Val 1</option>
    <option value="val2">Val 2</option>
    <option value="val3">Val 3</option>
  </select>
</div>

我需要选择值为val2的选项。如何做到这一点呢?

这是一个演示页面: http://jsfiddle.net/9Stxb/


当前回答

这对我来说很管用:

$("#id_100").val("val2");

其他回答

有一个更简单的方法,不需要你进入选项标签:

$("div.id_100 select").val("val2");

看看这个jQuery方法。

注意:上面的代码不会触发变更事件。 为了完全兼容,你需要这样调用它:

$("div.id_100 select").val("val2").change();

最好在设置select value之后使用change()。

$("div.id_100 select").val("val2").change();

通过这样做,代码将关闭更改用户的选择,解释包括在JS提琴:

JS小提琴

当值是ID而文本是代码时,我遇到了一个问题。不能使用代码设置值,但不能直接访问ID。

var value;

$("#selectorId > option").each(function () {
  if ("SOMECODE" === $(this).text()) {
    value = $(this).val();
  }
});

//Do work here

没有任何理由去想太多。您所要做的就是访问和设置一个属性。就是这样。

好的,一些基本的DOM:

如果你在JavaScript中直接这样做,你会这样做:

window.document.getElementById('my_stuff').selectedIndex = 4;

但你不是用JavaScript,而是用jQuery。在jQuery中,你想要使用.prop()函数来设置属性,所以你会这样做:

$("#my_stuff").prop('selectedIndex', 4);

不管怎样,只要确保你的id是唯一的。否则,你会用头撞墙,想知道为什么这行不通。

您可以使用属性选择器[attributename=optionalvalue]选择任何属性及其值,因此在您的情况下,您可以选择该选项并设置所选属性。

$("div.id_100 > select > option[value=" + value + "]").prop("selected",true);

其中value是您希望通过的值。

如果您需要删除任何先前选择的值,就像多次使用这种情况一样,您需要稍微更改它,以便首先删除所选的属性

$("div.id_100 option:selected").prop("selected",false);
$("div.id_100 option[value=" + value + "]")
        .prop("selected",true);