使用jquery按文本设置下拉值

Pra*_*sad 84 jquery drop-down-menu

我有一个下拉列表:

<select id="HowYouKnow" >
  <option value="1">FRIEND</option>
  <option value="2">GOOGLE</option>
  <option value="3">AGENT</option></select>
Run Code Online (Sandbox Code Playgroud)

在上面的下拉列表中,我知道下拉列表的文本.如何使用jquery使用文本设置document.ready中下拉列表的值?

Pet*_*r J 207

这是一种基于选项文本而不是索引的方法.刚刚测试过

var theText = "GOOGLE";
$("#HowYouKnow option:contains(" + theText + ")").attr('selected', 'selected');
Run Code Online (Sandbox Code Playgroud)

或者,如果有相似的值(感谢shanabus):

$("#HowYouKnow option").each(function() {
  if($(this).text() == theText) {
    $(this).attr('selected', 'selected');            
  }                        
});
Run Code Online (Sandbox Code Playgroud)

  • 这不适用于你的`select`列表包含具有相似文本值的`options`,即`<option> GOOGLE </ option> <option> GOOGLE PLUS </ option>` - 关于如何处理这个问题的想法? (8认同)
  • 上面的方法在jquery中从版本1.9.1和更新版本中删除.将.attr更改为.prop - >在此测试:http://jsfiddle.net/RB5wU/579/ (4认同)

Par*_*ham 15

对于完全匹配使用

    $("#HowYouKnow option").filter(function(index) { return $(this).text() === "GOOGLE"; }).attr('selected', 'selected');
Run Code Online (Sandbox Code Playgroud)

contains将选择最后一个可能不准确的匹配.


小智 5

$("#HowYouKnow option[value='" + theText + "']").attr('selected', 'selected'); // added single quotes
Run Code Online (Sandbox Code Playgroud)

  • 认为这只适用于索引而不是文本. (2认同)