我有一个选择字段,其中有一些选项。现在我需要用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/


当前回答

这里有很多解决方案来改变所选的值,但没有一个对我有用,因为我的挑战与操作略有不同。我需要根据这个值过滤另一个选择下拉。

大多数人使用$("div.id_100").val("val2").change();让它为他们工作。我不得不稍微修改这个$("div#idOfDiv select").val("val2").trigger("change")。

这还不够,我还必须确保等待文档加载。我的完整代码如下所示:

$(document).ready(function() {
    $("div#idOfDiv select").val("val2").trigger("change");
});

其他回答

对我来说,下面的工作就完成了

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

选择值为'val2'的选项:

$('.id_100 option[value=val2]').attr('selected','selected');

下面是一个类似jQuery插件的简单函数。

    $.fn.selectOption = function(val){
        this.val(val)
        .find('option')
        .removeAttr('selected')
        .parent()
        .find('option[value="'+ val +'"]')
        .attr('selected', 'selected')
        .parent()
        .trigger('change');

        return this;
    };

你可以简单地做这样的事情:

$('.id_100').selectOption('val2');

使用这个的原因是因为您将所选语句更改为跨浏览器支持的DOM,也会触发更改,以便您可以捕获它。

它基本上是一种人类动作模拟。

先取消所有选择,然后过滤可选选项:

$('.id_100 option')
     .removeAttr('selected')
     .filter('[value=val1]')
         .attr('selected', true)

$ (" # graphtype选项(value = " ")”)。道具(“选择”,真正的);

当#graphtype是选择标记的id时,这种方法效果很好。

示例选择标签:

<select name="site" id="site" class="form-control" onchange="getgraph1(this.options[this.selectedIndex].value);">
   <option value="" selected>Site</option>
   <option value="sitea">SiteA</option>
   <option value="siteb">SiteB</option>
 </select>