Ho un elenco a discesa e vi ho associato un gestore di eventi di modifica. Ogni volta che l'utente seleziona una nuova opzione, voglio sapere se è l'ultima opzione della lista.Qual è il modo migliore per verificare se l'opzione attualmente selezionata in un elenco a discesa è l'ultima?
Fastidiosamente, la condizione rilevante nel frammento di seguito restituisce true sempre, è stato selezionato, non importa quale opzione:
sel.change(function() {
//this always returns true!
if(jQuery('#' + this.id + ' option').is(':last')) {
alert('hello I am the last option');
inputDiv.show();
inputDiv.find("input").attr('disabled',false);
} else {
inputDiv.hide();
inputDiv.find("input").attr('disabled',true);
}
});
Anche se faccio questo, il risultato è lo stesso:
if(jQuery('#' + this.id + ' option:selected').is(':last')) {
...
Cosa sto sbagliando? E se lo sapete, perché questi test valutano entrambi come veri?
EDIT: trovato la soluzione:
if(jQuery('#' + this.id + ' option:last').is(':selected')) {
...
}
Qualcuno conosce un modo migliore di fare questo?
Se si dispone di una soluzione al vostro proprio domanda è possibile aggiungerlo come non risposta una modifica alla domanda. Inoltre, l'opzione non jquery per porneL potrebbe essere leggermente più veloce. – bendewey
+1 per la domanda descrittiva titolo – Tjorriemorrie