6

我有一个包含以下代码的 html 文件:

<select id="gouv" name="gouv">
...some options here...
</select>

和以下 jQuery 代码:

$('#gouv option[value="myvalue"]').attr("checked","checked");

正如您当然知道的那样,将值为“myvalue”的选项设置为检查哪个工作正常。

现在的问题是,我不知道要设置为选中的选项的值,因为该值是存储在全局变量中的某个函数的结果。为简单起见,经过长时间调试,我将问题简化为以下内容:

var ident="myvalue";
$('#gouv option[value=ident]').attr("checked","checked");

而且这段代码不起作用!

我想知道为什么它不起作用,我们不能将值作为变量传递吗?有什么解决方法吗?

4

3 回答 3

21
var ident="myvalue";
$('#gouv option[value="' + ident + '"]').attr("selected", "selected");

selected是为<option>checked是为收音机!

prop如果您的 jQuery 版本 > 1.6 ,则更好地使用

$('#gouv option[value="' + ident +'"]').prop("selected", true);

请注意,您最好使用filter而不是属性选择器:

$('#gouv option').filter(function(){
    return this.value == indent;
}).prop("selected", true);

为什么你应该filter使用价值

如果您需要支持黑莓,他们有 jQuery 处理的 option.value 错误:

$('#gouv option').filter(function(){
    return $(this).val() == indent;
}).prop("selected", true);
于 2012-06-30T19:44:40.157 回答
5

jQuery .val()见这里)将按值选择一个选项:

var ident = "myvalue";
$('#gouv').val(ident);

这相当于:

var ident = "myvalue";
$('#gouv option[value="' + ident + '"]').attr("selected", "selected");

ident除了后者如果包含任何双引号会有问题。

于 2012-06-30T19:52:58.677 回答
0

我尝试了以上所有答案,(毫无疑问它们是正确的)但它们对我不起作用不知道原因,不知何故我发现以下一行代码很容易工作,我的下拉值没有改变对于前视图,即使当我单击下拉选择时它会发生变化。所以对我来说,解决方案是

$('#nights').show().focus().click();
于 2021-10-05T06:52:51.500 回答