jQuery ottenere opzione specifica il testo del tag
-
10-07-2019 - |
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.
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.
Se c'è solo un tag select nella pagina specificare quindi selezionare all'interno della id "elenco"
jQuery("select option[value=2]").text();
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;'> </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();