2012-06-30 54 views
4

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

并且此代码不起作用!

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

+1

你试过'$('#gouv').val(ident)'? jQuery的'.val()'应该能够设置select的值。 –

+0

@MarkEirich。 'val'有什么关系? – gdoron

+0

'.val(value)'设置选择的值。这不是你想要的吗? –

回答

15
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); 

Why you should use filter for value

如果您需要支持黑莓手机,他们有错误的选项。价值jQuery处理:

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

非常感谢你,现在我觉得自己像个白痴,以前我用过这个,完全忘了它。感谢您选中/选择的评论,这只是写这篇文章时的错误。我的jQuery版本很旧,所以不支持prop。你能告诉我为什么使用过滤器更好?再次感谢。 –

+0

@IlyesFerchiou。有一个链接指向我回答的其他问题,不需要再次复制它。你读过它吗? – gdoron

+0

不,我没有,我会尽力去寻找它。再次感谢。只要网站允许,我会尽快接受答案。 –

4

jQuery的.val()see here)将选择由值的选项:

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

这相当于:

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

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

+0

+1是最简单,最好的方法。 – Bojangles

+0

好吧,这也可以工作,即使我不明白,我认为在这种情况下,值会返回所有SELECT元素的值为ident而不是所有的OPTION元素!但事情是,即使时间更长,第一个选项对双引号没有问题,如果字符串有双引号,我不能将它初始设置为变量,但我必须在设置时避开引号变量,接下来就没有问题了。 –

+1

所以,非常感谢你的回答,这当然更简单,但我的问题首先是为什么我不能使用它的方式我想用它和gdoron完美回答,我希望我可以设置2选择的答案,但我不能,所以我会给你一个+1,并且再次感谢你花时间给我这个更简单的解决方案。 –