我有一个已知值的下拉列表。我要做的是将下拉列表设置为我知道使用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),但这非常烦人。


当前回答

jQuery的文档声明:

(jQuery。Val]检查或选择所有单选按钮、复选框,并选择与该值集匹配的选项。

这个行为在jQuery 1.2及以上版本中。

你很可能想要这个:

$("._statusDDL").val('2');

添加.change()以查看下拉列表前端的选项:

$("._statusDDL").val('2').change();

其他回答

你需要像这样使用隐藏字段:

$("._statusDDL").val(2);
$("._statusDDL").change();

or

$("._statusDDL").val(2).change();

在研究了一些解决方案后,这对我来说很管用。

我有一个带有一些值的下拉列表,我想从另一个下拉列表中选择相同的值…首先我放入一个变量,第一个下拉菜单的selectIndex。

var indiceDatos = $('#myidddl')[0].selectedIndex;

然后,在第二个下拉列表中选择该索引。

$('#myidddl2')[0].selectedIndex = indiceDatos;

注意:

我想这是最短、可靠、通用和优雅的解决方案。

因为在我的例子中,我使用selected option的data属性而不是value属性。 所以如果你对每个选项都没有独特的价值,上面的方法是最简单和甜蜜的!!

另一种选择是在。net中设置控件参数ClientID="Static",然后你就可以通过你设置的ID在JQuery中访问对象。

我使用一个扩展函数来获取客户端id,如下所示:

$.extend({
    clientID: function(id) {
        return $("[id$='" + id + "']");
    }
});

然后您可以调用ASP。jQuery中的NET控件如下:

$.clientID("_statusDDL")

在我的情况下,我能够让它工作使用.attr()方法。

$("._statusDDL").attr("selected", "");