Como selecionar o primeiro elemento na lista suspensa usando jquery?


106

Eu quero saber como selecionar a primeira opção em todas as tags de seleção na minha página usando jquery.

tentei isso:

$('select option:nth(0)').attr("selected", "selected"); 

Mas não funcionou

Respostas:


193

Experimente isso ...

$('select option:first-child').attr("selected", "selected");

Outra opção seria esta, mas só funcionará para uma lista suspensa de cada vez, conforme codificado abaixo:

var myDDL = $('myID');
myDDL[0].selectedIndex = 0;

Dê uma olhada neste post sobre como definir com base no valor. É interessante, mas não ajudará você neste problema específico:

Altere o valor selecionado de uma lista suspensa com jQuery


apenas altere myID para selecionar como eu quero todas as tags selecionadas
— Amr Elgarhy

26
agora no jQuery você pode acessar as propriedades por meio do .prop()método. Portanto, você pode usar $("select").prop("selectedIndex",0);uma maneira rápida de selecionar a primeira opção em todos os menus suspensos.
— CBarr

3
Você sabe se isso irá disparar um evento de 'mudança' em todos os navegadores apenas definindo o atributo? Parece no Chrome, mas não testei extensivamente. Eu estava pensando em adicionar outro $('select').trigger('change');para o caso. Obrigado!
— Brian Armstrong

3
var myDDL = $('myID')deve ter hash no seletor para se tornarvar myDDL = $('#myID')
— user1069816

1
Este método funciona bem para mim:$('select option').first().prop('selected',true);
— Lorenzo Magon

13

Seu seletor está errado, você provavelmente estava procurando por

$('select option:nth-child(1)')

Isso também funcionará:

$('select option:first-child')

3
O índice seletor de nésimo filho do CSS começa em 1, não em 0
— Sergey



4

O que você provavelmente quer é:

$("select option:first-child")

Que codigo

attr("selected", "selected");

está fazendo está definindo o atributo "selecionado" para "selecionado"

Se você quiser as opções selecionadas, independentemente de ser o primeiro filho, o seletor é:

$("select").children("[selected]")

1
Substitua attrpor propse estiver usando jQuery 1.6+
— Jesan Fafon

2

Estou respondendo porque as respostas anteriores pararam de funcionar com a versão mais recente do jQuery. Não sei quando parou de funcionar, mas a documentação diz que .prop () tem sido o método preferido para obter / definir propriedades desde o jQuery 1.6.

É assim que eu fiz funcionar (com jQuery 3.2.1):

$('select option:nth-child(1)').prop("selected", true);

Estou usando knockoutjs e as ligações de alteração não estavam disparando com o código acima, então adicionei .change () ao final.

Aqui está o que eu precisava para minha solução:

$('select option:nth-child(1)').prop("selected", true).change();

Consulte as notas .prop () na documentação aqui: http://api.jquery.com/prop/


2

Aqui está uma javascriptsolução simples que funciona na maioria dos casos:

document.getElementById("selectId").selectedIndex = "0";

1

se você deseja verificar o texto da opção selecionada, independentemente de ser o primeiro filho.

var a = $("#select_id option:selected").text();
alert(a); //check if the value is correct.
if(a == "value") {-- execute code --}

Me salvou uma segunda pesquisa. Isso é basicamente o que eu estava procurando, embora estivesse mais interessado em alterar o valor do que em verificar. $('#myID option:selected').text('NEW STRING');
— Ricky Payne

1
    var arr_select_val=[];

    $("select").each(function() { 
        var name=this.name;
            arr_select_val[name]=$('select option:first-child').val();
    });


// Process the array object
     $('.orders_status_summary_div').print(arr_select_val);
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.