无法在 select 中更改 selected 选项

Can't change selected option in a select

我有一个 select,我想更改它的 selected 选项,但由于某些原因我无法实现它。这是我的代码。

$("#ID option[value=grpValue]").prop('selected', 'selected').change();

如果我不使用 "grpValue" 而不是手动输入值,例如值“3”,它确实有效。但我希望它使用 grpValue。

所以这个例子确实有效。

$("#ID option[value=3]").prop('selected', 'selected').change();

第一行我做错了什么?

在此先感谢您的帮助。

编辑:我已经尝试使用 option[value='grpValue'],但没有用。

grpValue是变量吗?如果是

$("#ID option[value="+grpValue+"]").prop('selected', 'selected').change();

将使属性选择器完成工作。

顺便说一句,我想

$obj.prop('selected', true);

prop 的正确表达式。

工作示例:

$("#ID option[value='b']").prop('selected', 'selected').change();
// if value in variable just replace  $("#ID option[value="+valueInVar+"]")
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="ID" >
<option value = "a">a</option>
<option value = "b">b</option>
<option value = "c">c</option>
</select>

$('#id_of_select').val('value_of_option_here');

编辑:解释为什么上面的代码有效。第一部分:

是jQuery我们使用下面的方法通过它的id来select一个元素,我们也可以通过简单地改变class来select一个元素'#' 到 '.'.

$('#id_of_select')

后面的语句指的是附加到每个输入、select、文本区域和按钮的值属性。该值是提交表单时传递的字符串。对于输入,这是键入的文本,对于 selects,它是 selected 选项的值。

当我们在 select 字段中单击一个选项时,我们实际上是在获取该选项的值并将其设置为 selects 值,select通过值知道 select 值是什么,然后它可以获取与该值关联的选项文本。下面的代码(带参数)将设置 select 字段的值,其方式与单击该选项时的方式相同。

注意 .val 必须有一个参数,否则您只是在询问 jQuery selected 字段的值是什么。有值会设置,没有值会获取。

.val('value_of_option_here');

希望这比我最初的回答更有用,我已尝试尽可能地分解它,但如果它有点令人困惑,请告诉我。

$(document).ready(function(){
 $("#sel option[value='c']").attr("selected",true);
  $("#sel option[value='c']").prop("selected",true);
});
<html><head><script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script></head>
  <body>
    <form>
      <select id="sel">
        <option value="a">a</option>
        <option value="b">b</option>
        <option value="c">c</option>
      </select>
    </form>
  </body>
</html>

you can use any one from prop() or attr() method both of useful