Domanda

Bene, dire che ho questo:

<select id='list'>
    <option value='1'>Option A</option>
    <option value='2'>Option B</option>
    <option value='3'>Option C</option>
</select>

Cosa sarebbe il selettore di guardare come se volevo fare un "Opzione B" quando ho il valore '2'?

Si prega di notare che questo non è chiedendo come ottenere il selezionato valore di testo, ma solo uno di essi, sia selezionato o meno, a seconda del valore di attributo.Ho provato:

$("#list[value='2']").text();

Ma non è che non funziona.

È stato utile?

Soluzione

È alla ricerca di un elemento con id list che ha una proprietà value uguale a 2.Quello che vuoi è il option figlio del list.

$("#list option[value='2']").text()

Altri suggerimenti

Se si desidera avere la possibilità, con un valore di 2, utilizzare

$("#list option[value='2']").text();

Se si desidera ottenere a seconda di quale opzione è selezionata, utilizzare

$("#list option:selected").text();

Questo ha funzionato perfettamente per me, stavo cercando un modo per l'invio di due diversi valori con opzioni generato da MySQL, e il seguente è generico e dinamico:

$(this).find("option:selected").text();

Come detto in uno dei commenti.Con questo sono stato in grado di creare una funzione dinamica 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 quando si aggiorna il jQuery da 1.6 a 1.9 del sito ho usato questo codice, questo smettere di lavorare...probabilmente era un conflitto con un altro pezzo di codice...comunque, la soluzione è stata quella di rimuovere opzione find() chiamata:

$(this).find(":selected").text();

Che è stata la mia soluzione...usare solo se avete qualche problema dopo l'aggiornamento di jQuery.

Basato su HTML originale inviato da Paolo mi si avvicinò con la 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 di più valore selezionato nella #list elemento.

  1. Se c'è solo un tag select nella pagina specificare quindi selezionare all'interno della id "elenco"

    jQuery("select option[value=2]").text();
    
  2. Per ottenere il testo selezionato

    jQuery("select option:selected").text();
    

Provare le seguenti opzioni:

$("#list option[value=2]").text();

Il motivo per cui il tuo snippet originale non funziona è perché il vostro OPTION i tag sono dei bambini al vostro SELECT etichetta, che ha lo id list.

Questa è una vecchia Questione che non è stato aggiornato nel tempo il modo corretto di fare questo ora potrebbe essere quello di utilizzare

$("#action").on('change',function() {
    alert($(this).find("option:selected").text()+' clicked!');
});

Spero che questo aiuta :-)

$(this).children(":selected").text()

Ho voluto 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 id.

Si può ottenere è selezionata l'opzione di testo utilizzando la funzione .text();

è possibile chiamare la funzione come questa :

jQuery("select option:selected").text();

Mentre il "loop" attraverso creati dinamicamente selezionare gli elementi .each(function()...): $("option:selected").text(); e $(this + " option:selected").text() al suo ritorno non è selezionata l'opzione di testo, invece, è stato nullo.

Ma Peter Mortensen soluzione lavorato:

$(this).find("option:selected").text();

Non so perché, il solito modo di non riuscire a .each() (probabilmente il mio errore proprio), ma grazie a te, Pietro.So che non era la domanda iniziale, ma sono la menzione "per neofiti attraverso Google."

Avrei iniziato con $('#list option:selected").each() tranne avevo bisogno di afferrare roba da selezionare elemento.

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 interno del campo nome invece di ID, e veniva da google per questo post che aiutano, ma non ha trovato la soluzione che ho bisogno, ma ho la soluzione, e qui è:

Quindi questo potrebbe essere di aiuto a qualcuno che cerca il valore selezionato con il campo nome interno invece di utilizzare id lunghi per gli elenchi di SharePoint:

var e = $('select[title="IntenalFieldName"] option:selected').text(); 

Ho bisogno di questa risposta, come ho avuto a che fare con un dinamicamente il cast di oggetti, e altri metodi qui non sembra funzionare:

element.options[element.selectedIndex].text

Questo, naturalmente, utilizza l' DOM oggetto invece di parsing HTML con nodeValue, childNodes, etc.

Un suggerimento:è possibile utilizzare sotto il codice, se il valore è dinamico:

$("#list option[value='"+aDynamicValue+"']").text();

O (meglio)

$("#list option").filter(function() {
     return this.value === aDynamicValue;
}).text();

Come accennato in jQuery ottenere opzione specifica il testo del tag e posizionamento dinamico variabile per il valore

Come soluzione alternativa, è anche possibile utilizzare un contesto parte del selettore di jQuery per trovare <option> elemento(s) con value="2" all'interno dell'elenco a discesa:

$("option[value='2']", "#list").text();

Volevo una versione dinamica per selezionare più che esporre ciò che è selezionato a destra (vorrei che avevo letto e visto $(this).find...precedenti):

<script type="text/javascript">
    $(document).ready(function(){
        $("select[showChoices]").each(function(){
            $(this).after("<span id='spn"+$(this).attr('id')+"' style='border:1px solid black;width:100px;float:left;white-space:nowrap;'>&nbsp;</span>");
            doShowSelected($(this).attr('id'));//shows initial selections
        }).change(function(){
            doShowSelected($(this).attr('id'));//as user makes new selections
        });
    });
    function doShowSelected(inId){
        var aryVals=$("#"+inId).val();
        var selText="";
        for(var i=0; i<aryVals.length; i++){
            var o="#"+inId+" option[value='"+aryVals[i]+"']";
            selText+=$(o).text()+"<br>";
        }
        $("#spn"+inId).html(selText);
    }
</script>
<select style="float:left;" multiple="true" id="mySelect" name="mySelect" showChoices="true">
    <option selected="selected" value=1>opt 1</option>
    <option selected="selected" value=2>opt 2</option>
    <option value=3>opt 3</option>
    <option value=4>opt 4</option>
</select>

È possibile 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());
    
});
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<select id='list'>
    <option value='1'>Option A</option>
    <option value='2'>Option B</option>
    <option value='3'>Option C</option>
</select>

Se si desidera ottenere il valore selezionato quindi:

$("#list option:selected").text();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top