Come selezionare il primo elemento nel menu a discesa utilizzando jquery?


106

Voglio sapere come selezionare la prima opzione in tutti i tag selezionati sulla mia pagina usando jquery.

provato questo:

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

Ma non ha funzionato

Risposte:


193

Prova questo ...

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

Un'altra opzione sarebbe questa, ma funzionerà solo per un elenco a discesa alla volta come codificato di seguito:

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

Dai un'occhiata a questo post su come impostare in base al valore, è interessante ma non ti aiuterà per questo problema specifico:

Modificare il valore selezionato di un elenco a discesa con jQuery


basta cambiare myID per selezionare come voglio tutti i tag selezionati
Amr Elgarhy

26
ora in jQuery puoi accedere alle proprietà tramite il .prop()metodo. Quindi puoi usare $("select").prop("selectedIndex",0);un modo rapido per selezionare la prima opzione su tutti i menu a discesa.
CBarr

3
Sai se questo attiverà un evento di "modifica" in tutti i browser semplicemente impostando l'attributo? Sembra in Chrome, ma non l'ho testato ampiamente. Stavo pensando di aggiungerne un altro $('select').trigger('change');per ogni evenienza. Grazie!
Brian Armstrong

3
var myDDL = $('myID')dovrebbe avere un hash nel selettore per diventarevar myDDL = $('#myID')
user1069816

1
Questo metodo funziona bene per me:$('select option').first().prop('selected',true);
Lorenzo Magon

13

Il tuo selettore è sbagliato, probabilmente stavi cercando

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

Funzionerà anche:

$('select option:first-child')

3
L'indice del selettore dell'ennesimo figlio CSS inizia da 1, non da 0
Sergey



4

Quello che vuoi è probabilmente:

$("select option:first-child")

Che cos'è questo codice

attr("selected", "selected");

sta impostando l'attributo "selected" su "selected"

Se desideri le opzioni selezionate, indipendentemente dal fatto che sia il primo figlio, il selettore è:

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

1
Sostituisci attrcon propse stai usando jQuery 1.6+
Jesan Fafon

2

Sto rispondendo perché le risposte precedenti hanno smesso di funzionare con l'ultima versione di jQuery. Non so quando ha smesso di funzionare, ma la documentazione dice che .prop () è stato il metodo preferito per ottenere / impostare le proprietà da jQuery 1.6.

Ecco come l'ho fatto funzionare (con jQuery 3.2.1):

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

Sto usando knockoutjs e le associazioni di modifica non venivano attivate con il codice sopra, quindi ho aggiunto .change () alla fine.

Ecco cosa mi serviva per la mia soluzione:

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

Vedere le note .prop () nella documentazione qui: http://api.jquery.com/prop/


2

Ecco una semplice javascriptsoluzione che funziona nella maggior parte dei casi:

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

1

se vuoi controllare il testo dell'opzione selezionata indipendentemente dal fatto che sia il primo figlio.

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

Mi ha salvato una seconda ricerca. Questo è più o meno quello che stavo cercando, anche se ero più interessato a modificare il valore che a controllarlo. $('#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);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.