使用jQuery设置下拉列表的选定索引


165

如果我找到控件的方式如下,如何在jQuery中设置下拉列表的索引:

$("*[id$='" + originalId + "']") 

我这样做是因为我正在动态创建控件,并且由于使用Web Forms时ID会更改,所以我发现这是一种为我找到一些控件的方法。但是一旦有了jQuery对象,我就不知道如何将所选索引设置为0(零)。

Answers:


352

首先-选择器非常慢。它将扫描每个DOM元素以查找ID。如果可以为元素分配一个类,则对性能的影响较小。

$(".myselect")

为了回答您的问题,有几种方法可以更改jQuery中的select元素值

// sets selected index of a select box to the option with the value "0"
$("select#elem").val('0'); 

// sets selected index of a select box to the option with the value ""
$("select#elem").val(''); 

// sets selected index to first item using the DOM
$("select#elem")[0].selectedIndex = 0;

// sets selected index to first item using jQuery (can work on multiple elements)
$("select#elem").prop('selectedIndex', 0);

有更好的方法吗?我认为它会扫描整个DOM以查找与ID匹配的对象,但是由于我是jQuery新手,所以让它起作用,然后看看是否有更好的方法可以做到。任何建议将不胜感激。
盎司

是的-如果您可以为需要查找的元素分配一个类,则它将是一个更快的选择器。
gnarf

@gnarf ID更快吗?
KBN

#an-id更快,但是*[id$=ends-with]
却更

如果我有多个具有不同选定索引值的ASP.net DropDownList怎么办?
SearchForKnowledge

106

刚找到这个,它对我有用,我个人觉得它更容易阅读。

这将设置实际索引,就像gnarf的答案3选项一样。

// sets selected index of a select box the actual index of 0 
$("select#elem").attr('selectedIndex', 0);

这以前不起作用,但现在可以了。参见错误:http : //dev.jquery.com/ticket/1474

附录

根据评论中的建议使用:

$("select#elem").prop('selectedIndex', 0);


30
从jQuery 1.6开始,.prop('selectedIndex', 0);无论是否.attr()工作,都应该使用:)
gnarf 2011年

1
正确,实际上它可能在1.7中不起作用。见接受的答案:stackoverflow.com/questions/8010664/...
4imble

附录+1。由于此问题,我的旧代码被破坏了
BiLaL 2014年

11

我在2015年写了这个答案,由于某种原因(可能是jQuery的较旧版本),其他答案对我没有用。我的意思是,他们更改了所选索引,但实际上并没有反映实际的下拉列表。

这是更改索引的另一种方法,实际上可以将其反映在下拉列表中:

$('#mydropdown').val('first').change();

1
感谢您的回答。只有这个答案是为我工作
的Viraj Dhamal

同样在2015年,我对prop('selectedIndex', ...);更改选择(通过Chrome和Firefox测试)没有问题。
Lambart

2
值得指出的是,您在这里所做的与众不同,这是change在下拉菜单中触发事件,对于通过调用prop('selectedIndex', ...)而不是来更改选择的人员,这也可能是有用的修复/解决方法val(...)。也许问题出在,您正在听某个change事件,那对您不起作用?的确,仅仅改变prop
常识不会引发

9

我正在使用

$('#elem').val('xyz');

选择具有value ='xyz'的选项元素


9

jQuery代码:

$("#sel_status").prop('selectedIndex',1);

Jsp代码:

Status:
<select name="sel_status"
    id="sel_status">
    <option value="1">-Status-</option>
    <option>ALL</option>
    <option>SENT</option>
    <option>RECEIVED</option>
    <option>DEACTIVE</option>
</select>

3

您想获取select元素中第一个选项的值。

$("*[id$='" + originalId + "']").val($("*[id$='" + originalId + "'] option:first").attr('value'));

3

选择第二个选项

$('#your-select-box-id :nth-child(2)').prop('selected', true);

在这里,我们添加`trigger('change')来触发事件。

$('#your-select-box-id :nth-child(2)').prop('selected', true).trigger('change');

这是一个更好的答案。
Ben Dehghan


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.