如果您知道索引、值或文本。如果您没有直接引用的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>

当前回答

用于在选择触发时设置选择值:

$('select.opts').val('SEL1').change();

从范围设置选项:

$('.selDiv option[value="SEL1"]')
    .attr('selected', 'selected')
    .change();

这段代码使用选择器找出带有条件的select对象,然后通过attr()更改所选属性。


此外,我建议在将属性设置为selected之后添加change()事件,通过这样做,代码将接近用户更改select。

其他回答

有很多方法可以做到这一点,但在val()的顶级答案和大量参数中,最干净的方法已经丢失了。从jQuery1.6开始,一些方法也发生了变化,因此需要更新。

对于以下示例,我将假设变量$select是指向所需<select>标记的jQuery对象,例如通过以下方式:

var $select = $('.selDiv .opts');

注意1-使用val()进行值匹配:

对于值匹配,使用val()比使用属性选择器简单得多:https://jsfiddle.net/yz7tu49b/6/

$select.val("SEL2");

val()的setter版本是通过将匹配选项的selected属性设置为相同值来在select标记上实现的,因此在所有现代浏览器上都能正常工作。

注2-使用prop(“selected”,true):

如果要直接设置选项的选定状态,可以使用prop(而不是attr)和布尔参数(而不是选定的文本值):

例如https://jsfiddle.net/yz7tu49b/

$option.prop('selected', true);  // Will add selected="selected" to the tag

注3-允许未知值:

如果使用val()选择<option>,但val不匹配(可能会发生,具体取决于值的来源),则选择“nothing”,$select.val()将返回null。

因此,对于所示的示例,为了健壮性,您可以使用以下内容https://jsfiddle.net/1250Ldqn/:

var $select = $('.selDiv .opts');
$select.val("SEL2");
if ($select.val() == null) {
  $select.val("DEFAULT");
}

注4-精确文本匹配:

如果您想通过精确的文本进行匹配,可以使用带有函数的筛选器。例如https://jsfiddle.net/yz7tu49b/2/:

var $select = $('.selDiv .opts');
$select.children().filter(function(){
    return this.text == "Selection 2";
}).prop('selected', true);

尽管如果您可能有额外的空格,您可能希望在支票中添加一个修饰,如

    return $.trim(this.text) == "some value to match";

注5-按索引匹配

如果您想通过索引进行匹配,只需对select的子项进行索引即可。https://jsfiddle.net/yz7tu49b/3/

var $select = $('.selDiv .opts');
var index = 2;
$select.children()[index].selected = true;

虽然我现在倾向于避免直接使用DOM财产而使用jQuery,但我希望使用经得起未来考验的代码,因此也可以这样做https://jsfiddle.net/yz7tu49b/5/:

var $select = $('.selDiv .opts');
var index = 2;
$select.children().eq(index).prop('selected', true);

注意6-使用change()启动新选择

在上述所有情况下,更改事件都不会触发。这是为了避免递归更改事件。

要生成更改事件,如果需要,只需向jQueryselect对象添加对.change()的调用。例如,第一个最简单的例子变成https://jsfiddle.net/yz7tu49b/7/

var $select = $('.selDiv .opts');
$select.val("SEL2").change();

还有很多其他方法可以使用属性选择器来查找元素,如[value=“SEL2”],但您必须记住,与所有其他选项相比,属性选择器相对较慢。

谢谢你的提问。希望这段代码对您有用。

var val = $("select.opts:visible option:selected ").val();
/* This will reset your select box with "-- Please Select --"   */ 
    <script>
    $(document).ready(function() {
        $("#gate option[value='']").prop('selected', true);
    });
    </script>

有一些建议为什么你应该使用prop而不是attr。肯定要使用prop,因为我已经测试了这两种情况,attr会给你奇怪的结果,除了最简单的情况。

我想要一个解决方案,从任意分组的选择选项中自动选择同一页面上的另一个选择输入。例如,如果你有两个下拉列表-一个用于国家,另一个用于大洲。在这种情况下,选择任何国家都会自动在另一个大陆下拉列表中选择该国家的大陆。

$(“#country”).on(“change”,function(){//获取大陆var originLocationRegion=$(this).find(“:selected”).data(“originregion”);//用道具正确选择大陆$('#continental option[value=“'+originLocationRegion+'”]').prop('selected',true);});$(“#country2”).on(“change”,函数(){//获取大陆var originLocationRegion=$(this).find(“:selected”).data(“originregion”);//用attr错误地选择大陆$('#continent2选项[value=“'+originLocationRegion+'”]').attr('selected',true);});<link href=“https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css“rel=”stylesheet“/><script src=“https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js“></script><div class=“container”><表单><h4 class=“text success”>支持好东西;)</h4><div class=“form row”><div class=“form group col-md-6 col-sm-6”><label>国家</label><select class=“custom select country”id=“country”><option disabled selected>选择国家</option>阿富汗</option><option data origin region=“Antarcia”value=“Antatria”>Antarcia</option>澳大利亚</option>奥地利</option><option数据来源地区=“亚洲”value=“孟加拉国”>孟加拉国</option><option数据来源地区=“南美”value=“巴西”>巴西</option><option数据来源地区=“非洲”value=“喀麦隆”>喀麦隆</option><option数据来源地区=“北美”value=“加拿大”>加拿大</option><option数据来源地区=“南美”value=“智利”>智利</option><option数据来源地区=“亚洲”值=“中国”>中国</option><option数据来源地区=“南美”value=“厄瓜多尔”>厄瓜多尔</option><option data origin region=“澳大利亚”value=“斐济”>斐济</option><option数据来源地区=“北美”value=“墨西哥”>墨西哥</option><option数据来源地区=“澳大利亚”value=“新西兰”>新西兰</option><option数据来源地区=“非洲”value=“尼日利亚”>尼日利亚</option><option data origin region=“欧洲”value=“葡萄牙”>葡萄牙</option><option数据来源地区=“非洲”value=“塞舌尔”>塞舌尔</option><option数据来源地区=“北美”value=“美国”>美国</option><option data origin region=“Europe”value=“United Kingdom”>英国</option></选择></div><div class=“form group col-md-6 col-sm-6”><label>欧洲大陆</label><select class=“custom select”id=“continental”><option disabled selected>选择大陆</option><option disabled value=“Africa”>非洲</option><option disabled value=“Antartica”>心外膜</option><option disabled value=“Asia”>亚洲</option><option disabled value=“Europe”>欧洲</option><option disabled value=“北美”>北美</option><option disabled value=“Australia”>澳大利亚</option><option disabled value=“南美”>南美</option></选择></div></div></form><小时><表单><h4 class=“text danger”>将坏东西归因于属性</h4><div class=“form row”><div class=“form group col-md-6 col-sm-6”><label>国家</label><select class=“custom select country-2”id=“country 2”><option disabled selected>选择国家</option>阿富汗</option><option data origin region=“Antarcia”value=“Antatria”>Antarcia</option>澳大利亚</option>奥地利</option><option数据来源地区=“亚洲”value=“孟加拉国”>孟加拉国</option><option数据来源地区=“南美”value=“巴西”>巴西</option><option数据来源地区=“非洲”value=“喀麦隆”>喀麦隆</option><option数据来源地区=“北美”value=“加拿大”>加拿大</option><option数据来源地区=“南美”value=“智利”>智利</option><option数据来源地区=“亚洲”值=“中国”>中国</option><option数据来源地区=“南美”value=“厄瓜多尔”>厄瓜多尔</option><option data origin region=“澳大利亚”value=“斐济”>斐济</option><option数据来源地区=“北美”value=“墨西哥”>墨西哥</option><option数据来源地区=“澳大利亚”value=“新西兰”>新西兰</option><option数据来源地区=“非洲”value=“尼日利亚”>尼日利亚</option><option data origin region=“欧洲”value=“葡萄牙”>葡萄牙</option><option数据来源地区=“非洲”value=“塞舌尔”>塞舌尔</option><option数据来源地区=“北美”value=“美国”>美国</option><option data origin region=“Europe”value=“United Kingdom”>英国</option></选择></div><div class=“form group col-md-6 col-sm-6”><label>欧洲大陆</label><select class=“custom select”id=“continent2”><option disabled selected>选择大陆</option><option disabled value=“Africa”>非洲</option><option disabled value=“Antartica”>心外膜</option><option disabled value=“Asia”>亚洲</option><option disabled value=“Europe”>欧洲</option><option disabled value=“北美”>北美</option><option disabled value=“Australia”>澳大利亚</option><option disabled value=“南美”>南美</option></选择></div>

如代码片段所示,prop每次都能正常工作,但一旦选择了一次选项,attr就无法正确选择。

关键点:我们通常对属性的属性感兴趣,所以在大多数情况下使用prop比attr更安全。

完全可以,尝试以下方法

对于正常选择选项

<script>    
    $(document).ready(function() {
    $("#id").val('select value here');
       });
        </script>

对于选择2选项,需要使用触发器选项

<script>    
        $(document).ready(function() {
        $("#id").val('select value here').trigger('change');
           });
            </script>