我有一个已知值的下拉列表。我要做的是将下拉列表设置为我知道使用jQuery存在的特定值。
使用常规的JavaScript,我会做如下的事情:
ddl = document.getElementById("ID of element goes here");
ddl.value = 2; // 2 being the value I want to set it too.
然而,我需要用jQuery做到这一点,因为我使用CSS类为我的选择器(愚蠢的ASP。NET客户端id…)。
以下是我尝试过的一些方法:
$("._statusDDL").val(2); // Doesn't find 2 as a value.
$("._statusDDL").children("option").val(2) // Also failed.
我如何用jQuery做到这一点?
更新
所以事实证明,我第一次就说对了:
$("._statusDDL").val(2);
当我把警报放在上面时,它工作得很好,但当我删除警报并让它全速运行时,我得到了错误
无法设置所选属性。无效的指数
我不确定这是jQuery或Internet Explorer 6的bug(我猜是Internet Explorer 6),但这非常烦人。
我知道这是一个老问题,除了在某些情况下,上述解决方案很好。
就像
<select id="select_selector">
<option value="1">Item1</option>
<option value="2">Item2</option>
<option value="3">Item3</option>
<option value="4" selected="selected">Item4</option>
<option value="5">Item5</option>
</select>
因此,Item4将在浏览器中显示为“Selected”,现在您想将值更改为3,并显示“Item3”,而不是Item4。所以按照上面的解决方案,如果你使用
jQuery("#select_selector").val(3);
您将在浏览器中看到Item 3被选中。但是当您使用php或asp处理数据时,您将发现所选值为“4”。原因是,你的html看起来是这样的。
<select id="select_selector">
<option value="1">Item1</option>
<option value="2">Item2</option>
<option value="3" selected="selected">Item3</option>
<option value="4" selected="selected">Item4</option>
<option value="5">Item5</option>
</select>
在服务器端语言中,它的最后一个值是“4”。
这是我最后的解决方案
newselectedIndex = 3;
jQuery("#select_selector option:selected").removeAttr("selected");
jQuery("#select_selector option[value='"+newselectedIndex +"']").attr('selected', 'selected');
编辑:在“+newselectedIndex+”周围添加单引号,这样同样的功能可以用于非数值。
我要做的是,移除选中的属性然后新建一个选中的属性。
我希望来自@strager, @y0mbo, @ISIK等高级程序员的评论