2013-07-01 9 views
9

Desidero rispondere all'utente selezionando un elemento in un elemento selezionato. Eppure questo jQuery:Quale evento si attiva quando viene selezionato l'elemento nell'elenco di selezione/discesa HTML?

$('#platypusDropDown').select(function() { 
    alert('You selected something'); 
}); 

... non fa niente. Non mostra alcun avviso, sebbene jsFiddle lo veda come jQuery valido.

L'evento Click funziona, ma è troppo veloce - si attiva facendo clic sull'elemento select, prima di effettuare una selezione.

Certo, ho voglia di fare qualcosa di simile:

$('#platypusDropDown').select(function() { 
    var selection = $('platypusDropDown').val; 
    $.getJSON('platypus.json', selection, data() { 
     // . . . 
    }); 
}); 

Il codice HTML:

<select id="platypusDropDown"> 
    <option value="duckbill">duckbill</option> 
    <option value="duckbillPlatypus">duckbillPlatypus</option> 
    <option value="Platypus">Platypus</option> 
    <option value="Platypi">Platypi</option> 
</select> 

risposta

10

È necessario utilizzare change evento

$('#platypusDropDown').change(function() { 
    var selection = this.value; //grab the value selected 
    $.getJSON('platypus.json', selection, data() { 
    . . . 
    }); 
}); 

Fiddle

Inoltre $('platypusDropDown').val qui val dovrebbe essere val() e non avete bisogno di creare un oggetto jQuery di nuovo sopra l'elemento, this all'interno del gestore rappresenta elemento DOM (selezionate su cui l'evento è destinato a) ed è possibile accedere direttamente al valore con this.value o $(this).val()

Problemi correlati