你如何在jQuery的SELECT元素中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> 

通过值获取中间选项元素的select器是

 $('.selDiv option[value="SEL1"]') 

对于索引:

 $('.selDiv option:eq(1)') 

对于一个已知的文字:

 $('.selDiv option:contains("Selection 1")') 

编辑 :正如上面评论OP可能已经改变下拉选定的项目后。 在版本1.6及更高版本中,build议使用prop()方法:

 $('.selDiv option:eq(1)').prop('selected', true) 

在旧版本中:

 $('.selDiv option:eq(1)').attr('selected', 'selected') 

在Ryan的评论之后, EDIT2 。 “select10”上的匹配可能是不需要的。 我发现没有select匹配全文,但是一个filter工作:

  $('.selDiv option') .filter(function(i, e) { return $(e).text() == "Selection 1"}) 

上述方法都没有提供我需要的解决scheme,所以我想我会提供什么为我工作。

 $('#element option[value="no"]').attr("selected", "selected"); 

你可以使用val()方法:

 $('select').val('the_value'); 

按照价值, jQuery 1.7的工作是以下代码,试试这个:

 $('#id option[value=theOptionValue]').prop('selected', 'selected').change(); 

你可以命名select并使用这个:

 $("select[name='theNameYouChose']").find("option[value='theValueYouWantSelected']").attr("selected",true); 

它应该select你想要的选项。

  $(elem).find('option[value="' + value + '"]').attr("selected", "selected"); 

回答我自己的问题的文件。 我相信有其他的方法来完成这个,但是这个工作,这个代码被testing。

 <html> <head> <script language="Javascript" src="javascript/jquery-1.2.6.min.js"></script> <script type="text/JavaScript"> $(function() { $(".update").bind("click", // bind the click event to a div function() { var selectOption = $('.selDiv').children('.opts') ; var _this = $(this).next().children(".opts") ; $(selectOption).find("option[index='0']").attr("selected","selected"); // $(selectOption).find("option[value='DEFAULT']").attr("selected","selected"); // $(selectOption).find("option[text='Default']").attr("selected","selected"); // $(_this).find("option[value='DEFAULT']").attr("selected","selected"); // $(_this).find("option[text='Default']").attr("selected","selected"); // $(_this).find("option[index='0']").attr("selected","selected"); }); // END Bind }); // End eventlistener </script> </head> <body> <div class="update" style="height:50px; color:blue; cursor:pointer;">Update</div> <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> </body> </html> 

有很多方法可以做到这一点,但最重要的方法已经失去了val()的参数的最佳答案和加载。 还有一些方法由于jQuery 1.6而改变,所以需要更新。

对于下面的例子,我将假设variables$select是一个jQuery对象,指向所需的<select>标签,例如通过以下方式:

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

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

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

 $select.val("SEL2"); 

.val()的setter版本通过设置具有相同value的匹配optionselected属性在select标签上实现,因此在所有现代浏览器上都可以正常工作。

注2 – 使用prop('selected',true):

如果要直接设置选项的选定状态,则可以使用具有boolean参数的prop (而不是attr )(而不是selected的文本值):

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

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

注3 – 允许未知的值:

如果使用val()select一个<option> ,但是val不匹配(可能会根据值的来源发生),那么select“nothing”, $select.val()将返回null

所以,对于所示的示例,并为了健壮性,您可以使用像这样的https://jsfiddle.net/1250Ldqn/

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

注4 – 确切的文字匹配:

如果你想通过确切的文字匹配,你可以使用function的filter 。 例如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()来激发新的select

在所有上述情况下,变更事件不会触发。 这是通过devise,使您不会收到recursion更改事件。

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

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

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

使用jQuery的2.1.4 ,我发现以下答案为我工作:

 $('#MySelectionBox').val(123).change(); 

如果您有一个string值,请尝试以下操作:

 $('#MySelectionBox').val("extra thing").change(); 

其他例子没有为我工作,所以这就是为什么我join这个答案。

我find了原始答案: https : //forum.jquery.com/topic/how-to-dynamically-select-option-in-dropdown-menu

我使用这个,当我知道列表的索引。

 $("#yourlist :nth(1)").prop("selected","selected").change(); 

这允许列表更改,并触发更改事件。 “:n(n)”从索引0开始计数

我会去: –

 $("select#my-select option") .each(function() { this.selected = (this.text == myVal); }); 

对于jQuery的select,如果你发送属性function,需要更新select选项

 $('#yourElement option[value="'+yourValue+'"]').attr('selected', 'selected'); $('#editLocationCity').chosen().change(); $('#editLocationCity').trigger('liszt:updated'); 
 /* This will reset your select box with "-- Please Select --" */ <script> $(document).ready(function() { $("#gate option[value='']").prop('selected', true); }); </script> 

用于select触发设置select值:

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

从范围设置选项:

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

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


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

$('select').val('the_value'); 看起来是正确的解决scheme,如果你有数据表行,那么:

 $row.find('#component').val('All'); 

如果你不想使用jQuery,你可以使用下面的代码:

 document.getElementById("mySelect").selectedIndex = "2"; 

谢谢你的问题。 希望这段代码能为你工作。

 var val = $("select.opts:visible option:selected ").val(); 

尝试这个

您只需使用select字段ID而不是#id(即。#select_name)

而不是选项值使用您的select选项

  <script> $(document).ready(function() { $("#id option[value='option value']").attr('selected',true); }); </script>