通过传递给变量的值选择选择选项

时间:2012-06-30 19:43:46

标签: jquery select option

我有一个包含以下代码的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");

并且此代码不起作用!

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

2 个答案:

答案 0 :(得分:18)

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

selected适用于<option>checked适用于广播!

如果你的jQuery版本是&gt;那么最好使用prop 1.6

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

请注意,最好使用filter代替属性选择器:

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

Why you should use filter for value

如果你需要支持黑莓,他们就会遇到jQuery处理的option.value错误:

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

答案 1 :(得分:4)

jQuery的.val()see here)将按值选择一个选项:

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

这相当于:

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

如果ident包含任何双引号,则后者会出现问题。