如何使用jQuery选择<select>的第一个选项

omg*_*omg 527 jquery select

如何使用jQuery选择第一个选项?

<select id="target">
  <option value="1">...</option>
  <option value="2">...</option>
</select>
Run Code Online (Sandbox Code Playgroud)

Dav*_*res 911

$("#target").val($("#target option:first").val());
Run Code Online (Sandbox Code Playgroud)

  • 需要注意的是,这更容易用$("#target")[0] .selectedIndex = 0; (348认同)
  • 它工作,但它基于第一个元素*值*,如果第一个元素包含空值,它将选择最近的元素WITH值 (15认同)
  • 我放弃了我先前的陈述,正在超越自己.$( "#目标")VAL( "选项:一是"); 除了IE6 $("目标").val($("#target选项:第一个").val()); 将在IE6中工作,因为您实际上在查找第一个值,并将其作为目标值输入.两个id查找而不是一个. (3认同)
  • 似乎工作得很好,IE6除外.不确定7-8,适用于9. (2认同)
  • 它实际上是IE6,7和8所必需的.而.val('选项:第一个')适用于IE9(以及Safari和Firefox以及Chrome和Opera). (2认同)
  • 这个答案是不正确的。$("#target")[0].selectedIndex = 0; 的建议 应该使用。正如其他人所指出的,在所有情况下,它始终是第一个元素。使用该值是不可靠的 - 例如,如果多个元素与第一个元素共享相同的值。 (2认同)
  • $("#target")[0].selectedIndex = 0 不会关心禁用的选项,如果你禁用了第一个选项,请小心。 (2认同)

小智 163

你可以试试这个

$("#target").prop("selectedIndex", 0);
Run Code Online (Sandbox Code Playgroud)

  • @Tomasz` $("#target").prop("selectedIndex",0).change();` (3认同)
  • 这在所有情况下都不能正常工作.我有一个父/子级联下拉.选择父#1,显示子#1,选择父#2显示子#2.只要他们选择新的父级,就应该将相应的子级设置回第一个选项.此解决方案不会这样做.它使子菜单"粘".请参阅选项:selected.prop('selected',false)/ option:first.prop('selected','selected')此问题的解决方案,以获得适用于更多场景的答案. (2认同)

use*_*513 108

// remove "selected" from any options that might already be selected
$('#target option[selected="selected"]').each(
    function() {
        $(this).removeAttr('selected');
    }
);


// mark the first option as selected
$("#target option:first").attr('selected','selected');
Run Code Online (Sandbox Code Playgroud)

  • 不需要`each`函数,应该是:`$('#target选项[selected ="selected"]').removeAttr('selected')`现在也应该与`removeProp`和`prop一起使用`而不是. (19认同)

Jim*_*ang 65

当你使用

$("#target").val($("#target option:first").val());
Run Code Online (Sandbox Code Playgroud)

如果第一个选项值为null,则无法在Chrome和Safari中使用.

我更喜欢

$("#target option:first").attr('selected','selected');
Run Code Online (Sandbox Code Playgroud)

因为它可以在所有浏览器中使用.

  • 您还需要"取消选择"任何先前选定的元素,以便在更多情况下工作.有关详细信息,请参阅James Lee Baker的答案. (3认同)

Jam*_*ker 43

更改选择输入的值或调整所选属性可能会覆盖DOM元素的默认selectedOptions属性,从而导致元素在调用了重置事件的表单中无法正确重置.

使用jQuery的prop方法清除并设置所需的选项:

$("#target option:selected").prop("selected", false);
$("#target option:first").prop("selected", "selected");
Run Code Online (Sandbox Code Playgroud)

  • 完善.我有级联下拉菜单.当用户选择父选项2然后子选项3我不希望它"坚持".换句话说,用户然后选择父#1,然后重新选择父#2.当发生这种情况时,我希望子菜单重置为第一个选项(在我的情况下为"Any").所有其他解决方案都在Firefox v19和Linux上的Chrome上失败. (3认同)

小智 32

$("#target")[0].selectedIndex = 0;
Run Code Online (Sandbox Code Playgroud)


Bra*_*ard 19

认为我发现最高投票答案的一个微妙之处在于即使他们正确地更改了所选值,他们也不会更新用户看到的元素(只有当他们点击小工具时他们才会看到旁边的支票.更新的元素).

将.change()调用链接到最后也将更新UI小部件.

$("#target").val($("#target option:first").val()).change();
Run Code Online (Sandbox Code Playgroud)

(请注意,我在使用jQuery Mobile和Chrome桌面上的一个框时注意到了这一点,所以在任何地方都可能不是这样).


Mel*_*nie 15

如果您已禁用选项,则可以添加([禁用])以防止选择它们,结果如下:

$("#target option:not([disabled]):first").attr('selected','selected')
Run Code Online (Sandbox Code Playgroud)


小智 15

重置值(对于多个选定元素)的另一种方法可能是:

$("selector").each(function(){

    /*Perform any check and validation if needed for each item */

    /*Use "this" to handle the element in javascript or "$(this)" to handle the element with jquery */

    this.selectedIndex=0;

});
Run Code Online (Sandbox Code Playgroud)

  • +1它实际上是一个很好的答案,但你可以使它更具体的问题域; 而不是`$("selector")`你可以写'$('#target')` (4认同)

小智 9

这对我有用!

$("#target").prop("selectedIndex", 0);
Run Code Online (Sandbox Code Playgroud)


FFF*_*FFF 7

$('#newType option:first').prop('selected', true);
Run Code Online (Sandbox Code Playgroud)


小智 7

很简单:

$('#target option:first').prop('selected', true);
Run Code Online (Sandbox Code Playgroud)


Fra*_*wis 6

我发现如果已经选择了属性,那么只设置选中的attr不起作用.我现在使用的代码将首先取消设置所选属性,然后选择第一个选项.

$('#target').removeAttr('selected').find('option:first').attr('selected', 'selected');
Run Code Online (Sandbox Code Playgroud)


Fab*_*zio 5

我将如何做到这一点:

$("#target option")
    .removeAttr('selected')
    .find(':first')     // You can also use .find('[value=MyVal]')
        .attr('selected','selected');
Run Code Online (Sandbox Code Playgroud)


Dar*_*Jon 5

虽然每个功能可能不是必需的......

$('select').each(function(){
    $(this).find('option:first').prop('selected', 'selected');
});
Run Code Online (Sandbox Code Playgroud)

为我工作。