Question jQuery obtient un texte de tag d'option spécifique


D'accord, dis que j'ai ceci:

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

A quoi ressemblerait le sélecteur si je voulais obtenir "Option B" quand j'ai la valeur '2'?

S'il vous plaît noter que cela ne demande pas comment obtenir le choisi valeur de texte, mais seulement l'une d'entre elles, qu'elle soit sélectionnée ou non, en fonction de l'attribut value. J'ai essayé:

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

Mais ça ne fonctionne pas.


1137
2017-10-13 04:06


origine


Réponses:


Il cherche un élément avec id list qui a une propriété value égal à 2. Ce que vous voulez, c'est le option enfant de list.

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

1051
2017-10-13 04:08



Si vous souhaitez obtenir l'option avec une valeur de 2, utilisez

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

Si vous souhaitez obtenir l'option actuellement sélectionnée, utilisez

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

1238
2018-05-15 15:52



Cela a fonctionné parfaitement pour moi, je cherchais un moyen d'envoyer deux valeurs différentes avec des options générées par MySQL, et ce qui suit est générique et dynamique:

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

Comme mentionné dans l'un des commentaires. Avec cela, j'ai été capable de créer une fonction dynamique qui fonctionne avec toutes mes boîtes de sélection que je veux obtenir les deux valeurs, la valeur de l'option et le texte.

Il y a quelques jours, j'ai remarqué que lors de la mise à jour de jQuery de 1.6 à 1.9 du site j'ai utilisé ce code, cela a cessé de fonctionner ... était probablement un conflit avec un autre morceau de code ... de toute façon, la solution était find () appel:

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

C'était ma solution ... utilisez-la seulement si vous avez un problème après la mise à jour de votre jQuery.


116
2017-07-29 18:55



Basé sur le code HTML original posté par Paolo, j'ai trouvé ce qui suit.

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

Il a été testé pour fonctionner sur Internet Explorer et Firefox.


107
2018-05-02 12:25



$("#list option:selected").each(function() {
   alert($(this).text());
});  

pour plusieurs valeur sélectionnée dans le #list élément.


36
2018-06-04 14:30



  1. S'il n'y a qu'une seule étiquette de sélection sur la page, vous pouvez spécifier select à l'intérieur de l'identifiant 'list'

    jQuery("select option[value=2]").text();
    
  2. Pour obtenir le texte sélectionné

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

36
2018-06-13 03:45



Essayez ce qui suit:

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

La raison pour laquelle votre extrait d'origine ne fonctionnait pas est que votre OPTION les étiquettes sont des enfants à votre SELECT tag, qui a le id  list.


23
2017-10-13 04:08



Ceci est une vieille question qui n'a pas été mise à jour depuis un certain temps la façon correcte de le faire maintenant serait d'utiliser

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

J'espère que ça aide :-)


19
2017-07-02 23:15



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

17
2018-04-03 11:21