我有一个包含以下代码的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");
并且此代码不起作用!
我想知道为什么它不起作用,我们不能将值作为变量传递?这有什么解决方法吗?
答案 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
包含任何双引号,则后者会出现问题。