我有一个已知值的下拉列表。我想做的是用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的错误(我猜是Internet Explorer 6),但这是非常令人讨厌的。
jQuery'的文档 指出。
[jQuery.val]检查,或选择,所有的单选按钮,复选框,以及符合一组值的选择选项。
这种行为是在jQuery
1.2`及以上版本。
你很可能想要这个。
$("._statusDDL").val('2');
你是如何将数值加载到下拉列表中或确定选择哪个数值的?如果你是用Ajax做的,那么你在选择发生之前需要延迟的原因可能是因为在执行该行的时候,这些值还没有被加载进去。 这也可以解释为什么你在设置状态之前在行上放一个警告语句时,它还能工作,因为警告动作会给数据加载足够的延迟。
如果你使用jQuery的Ajax方法,你可以指定一个回调函数,然后把$("._statusDDL").val(2);
放入你的回调函数。
这将是一个更可靠的处理问题的方法,因为你可以确定该方法在数据准备好时执行,即使它花费的时间超过300 ms。