jQuery ottiene il testo del tag dell’opzione specifico

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 .

    1. Se nella pagina è presente un solo tag select, è ansible specificare select all’interno dell’id ‘list’

       jQuery("select option[value=2]").text(); 
    2. 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()); });