你如何在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的匹配option的selected属性在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>