Come ottenere $ (questa) opzione selezionata in jQuery?


91

Il codice seguente funziona:

$("#select-id").change(function(){
  var cur_value = $('#select-id option:selected').text();
  . . .
});

Come eseguire il refactoring della seconda riga in:

var cur_value = $(this).***option-selected***.text();

Per cosa usi ***option-selected***?

Risposte:


120

Per il valore selezionato: $(this).val()

Se hai bisogno dell'elemento opzione selezionato, $("option:selected", this)


101
 $(this).find('option:selected').text();

Questo ha funzionato perfettamente per me: ho provato $("option:selected", this)come detto sopra, ma era problematico. Stavo usando un clic del pulsante per aggiungere il testo dell'elemento dell'opzione selezionato a un altro div, ma quando ho fatto clic sul pulsante, in realtà ha cambiato l'elemento selezionato ... strano. Usa questo.
skwidbreth

53

Il modo migliore e più breve secondo me per gli eventi onchange nel menu a discesa per ottenere l'opzione selezionata:

$('option:selected',this);

per ottenere l'attributo value:

$('option:selected',this).attr('value');

per ottenere la parte mostrata tra i tag:

$('option:selected',this).text();

Nel tuo campione:

$("#select-id").change(function(){
  var cur_value = $('option:selected',this).text();
});

Non utilizzare .context, è deprecato da jQuery 1.10 - api.jquery.com/category/deprecated/deprecated-1.10
rafx

Sì, ma quello che intendi è questo: api.jquery.com/context $ ("ul", document.body) .context.nodeName che non uso
angelmedia

1
Mi piace la risposta ma perché è la migliore?
Sébastien Gicquel



9

È possibile utilizzare findper cercare l'opzione selezionata che è un discendente del nodo (i) puntato dall'oggetto jQuery corrente:

var cur_value = $(this).find('option:selected').text();

Poiché questo è probabilmente un bambino immediato, suggerirei di utilizzare .childreninvece:

var cur_value = $(this).children('option:selected').text();

7
var cur_value = $(this).find('option:selected').text();

Poiché optionè probabile che selecttu sia figlio immediato di te puoi anche usare:

var cur_value = $(this).children('option:selected').text();

http://api.jquery.com/find/


Dove si arriva option-selectedsenza virgolette ...?
Platinum Azure

È stato un errore di battitura quando ho postato. Corretta la risposta.
thomthom

find('option:selected')restituisce una stringa vuota per me. Quale versione di jQuery è richiesta? Sto lavorando in 1.6.1. children('option:selected')funziona.
B Seven

option:selectedè stato lì dalla v1.0 api.jquery.com/selected-selector
thomthom

0

Miglior supposizione:

var cur_value = $('#select-id').children('option:selected').text();

Mi piacciono di più i bambini in questo caso perché sai che stai andando solo un ramo giù per l'albero DOM ...


Forse quello che intendevi davvero era var cur_value = $ (this) .children ('option: selected'). Text ();
Joe Johnston

0

È appena

$(this).val();

Penso che jQuery sia abbastanza intelligente da sapere di cosa hai bisogno

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.