单个<select>有多个选定的选项</select>

时间:2013-04-10 21:16:57

标签: javascript jquery html

我的标记是单选下拉列表,是标记的默认行为。我有三个值,“不”,“是”,“全部”。我正在尝试以编程方式更改所选内容,因为我之前已经完成了一千次,使用以下代码(我正在使用JQuery 1.9.1):

$('#select').children(':selected').removeAttr('selected');
$('#select').children('option[value="yes"]').attr('selected', 'selected');
$('#select').children(':selected');

我甚至不知道这是怎么可能的,但不知何故,在运行于10.8.3的Chrome 26.0.1410.65中,将会有两个选定的选项。其中只有一个会在UI中显示,但最后一行代码将返回两个元素。

这在Firefox 16.0.2中可以正常工作,所以我很神秘。有没有人知道这是否是Chrome的怪癖,或者这是否是正确的行为并且它刚刚改变了?

3 个答案:

答案 0 :(得分:3)

您可以这样做以选择所需的值

 $('#select').val('yes');

答案 1 :(得分:2)

停止尝试使用属性方法操作属性!较旧版本的jQuery允许你这样做,但较新版本的jQuery不会。

$('#select').children(':selected').prop("selected",false);
$('#select').children('option[value="yes"]').prop("selected",true);
//$('#select').children(':selected');

尽管穆罕默德·阿迪尔指出的.val()是一种更好的处理方法。

答案 2 :(得分:2)

您不应使用selected属性来更改选择的选项。相反,请使用dropdwn的selectedIndex属性。

例如,在您的情况下,您可能需要这样:

document.getElementById('select').selectedIndex = 1;