Va bene, dì che ho questo:
Option A Option B Option C
Che aspetto avrebbe il selettore se volessi ottenere “Opzione B” quando avrò il valore “2”?
Si noti che questo non sta chiedendo come ottenere il valore del testo selezionato , ma solo uno qualsiasi di essi, selezionato o meno, a seconda dell’attributo valore. Provai:
$("#list[value='2']").text();
Ma non sta funzionando.
Sta cercando un elemento con list
identificazione che abbia un value
proprietà uguale a 2. Quello che vuoi è l’ option
figlio della list
.
$("#list option[value='2']").text()
Se desideri ottenere l’opzione con un valore di 2, utilizza
$("#list option[value='2']").text();
Se desideri ottenere l’opzione attualmente selezionata, utilizza
$("#list option:selected").text();
Questo ha funzionato perfettamente per me, stavo cercando un modo per inviare due valori diversi con le opzioni generate da MySQL e quanto segue è generico e dinamico:
$(this).find("option:selected").text();
Come menzionato in uno dei commenti. Con questo sono stato in grado di creare una funzione dynamic che funziona con tutte le mie caselle di selezione che voglio ottenere entrambi i valori, il valore dell’opzione e il testo.
Pochi giorni fa ho notato che durante l’aggiornamento di jQuery da 1.6 a 1.9 del sito ho usato questo codice, questo smesso di funzionare … probabilmente era un conflitto con un altro pezzo di codice … comunque, la soluzione era quella di rimuovere l’opzione dal find () chiama:
$(this).find(":selected").text();
Questa era la mia soluzione … usala solo se hai qualche problema dopo aver aggiornato il tuo jQuery.
Basato sull’HTML originale pubblicato da Paolo, ho trovato il seguente.
$("#list").change(function() { alert($(this).find("option:selected").text()+' clicked!'); });
È stato testato per funzionare su Internet Explorer e Firefox.
$("#list option:selected").each(function() { alert($(this).text()); });
per più valori selezionati nell’elemento #list
.
Se nella pagina è presente un solo tag select, è ansible specificare select all’interno dell’id ‘list’
jQuery("select option[value=2]").text();
Per ottenere il testo selezionato
jQuery("select option:selected").text();
Prova quanto segue:
$("#list option[value=2]").text();
Il motivo per cui il tuo snippet originale non funzionava è perché i tag OPTION
sono figli del tuo tag SELECT
, che ha la list
id
.
Questa è una vecchia domanda che non è stata aggiornata da qualche tempo, il modo corretto per farlo ora sarebbe quello di usarlo
$("#action").on('change',function() { alert($(this).find("option:selected").text()+' clicked!'); });
Spero che aiuti 🙂
$(this).children(":selected").text()
Volevo ottenere l’etichetta selezionata. Questo ha funzionato per me in jQuery 1.5.1.
$("#list :selected").text();
$("#list [value='2']").text();
lasciare uno spazio dopo il selettore di identificazione.
Puoi ottenere il testo dell’opzione selezionato usando la funzione .text();
puoi chiamare la funzione in questo modo:
jQuery("select option:selected").text();
Mentre esegui il “loop” attraverso elementi di selezione creati dynamicmente con un .each (function () …): $("option:selected").text();
e $(this + " option:selected").text()
non ha restituito il testo dell’opzione selezionata – invece era null.
Ma la soluzione di Peter Mortensen ha funzionato:
$(this).find("option:selected").text();
Non so perché il solito modo non riesce in un .each()
(probabilmente il mio errore), ma grazie, Peter. So che non era la domanda originale, ma lo sto citando “per i neofiti che arrivano da Google”.
Avrei iniziato con $('#list option:selected").each()
tranne per il fatto che avevo bisogno di prelevare materiale dall’elemento select.
Uso:
function selected_state(){ jQuery("#list option").each(function(){ if(jQuery(this).val() == "2"){ jQuery(this).attr("selected","selected"); return false; } }); } jQuery(document).ready(function(){ selected_state(); });
Stavo cercando di ottenere val per nome di campo interno anziché ID e sono venuto da Google a questo post che aiuta ma non ha trovato la soluzione di cui ho bisogno, ma ho ottenuto la soluzione ed eccolo qui:
Quindi questo potrebbe aiutare qualcuno che cerca il valore selezionato con il nome interno del campo invece di usare l’ID lungo per gli elenchi di SharePoint:
var e = $('select[title="IntenalFieldName"] option:selected').text();
Avevo bisogno di questa risposta dato che avevo a che fare con un object lanciato in modo dinamico, e gli altri metodi qui non sembravano funzionare:
element.options[element.selectedIndex].text
Questo ovviamente usa l’object DOM invece di analizzare il suo HTML con nodeValue, childNodes, ecc.
Un consiglio: puoi usare sotto il codice se il tuo valore è dinamico:
$("#list option[value='"+aDynamicValue+"']").text();
O (stile migliore)
$("#list option").filter(function() { return this.value === aDynamicValue; }).text();
Come menzionato in jQuery, ottieni il testo del tag opzionale e posiziona la variabile dynamic sul valore
Come soluzione alternativa, puoi anche utilizzare una parte di contesto del selettore jQuery per trovare elemento (i) con
value="2"
all’interno dell’elenco a discesa:
$("option[value='2']", "#list").text();
Volevo una versione dynamic per selezionare multiple che visualizzasse ciò che è selezionato a destra (vorrei leggere e vedere $(this).find
… in precedenza):
È ansible ottenere uno dei seguenti modi
$("#list").find('option').filter('[value=2]').text() $("#list").find('option[value=2]').text() $("#list").children('option[value=2]').text() $("#list option[value='2']").text()
$(function(){ console.log($("#list").find('option').filter('[value=2]').text()); console.log($("#list").find('option[value=2]').text()); console.log($("#list").children('option[value=2]').text()); console.log($("#list option[value='2']").text()); });