Je dois vérifier si un <select>
a une option dont le texte est égal à une valeur spécifique.
Par exemple, s'il y a un <option value="123">abc</option>
, je rechercherais "abc".
Existe-t-il un sélecteur pour ce faire?
Je cherche quelque chose de similaire à $('#select option[value="123"]');
mais pour le texte.
has
réponse dans SLaks est utile, mais le point dans la réponse Floyds est également bon ... Je ne sais pas quoi accepter.Réponses:
Cela pourrait aider:
Violon de démonstration
Cela vous donnerait l'option avec du texte
B
et non pas ceux qui contiennent du texteB
. J'espère que cela t'aidesPour les versions récentes de jQuery, ce qui précède ne fonctionne pas. Comme commenté par Quandary ci-dessous, c'est ce qui fonctionne pour jQuery 1.9.1:
Violon mis à jour
la source
Vous pouvez utiliser le
:contains()
sélecteur pour sélectionner des éléments contenant du texte spécifique.Par exemple:
Pour vérifier si un
<select>
élément donné a une telle option, utilisez la.has()
méthode :Pour trouver tous les
<select>
s contenant une telle option, utilisez le:has()
sélecteur :la source
:contains
n'est pas définitif maintenant, n'est-ce pas?123abcdef
?Aucune des suggestions précédentes n'a fonctionné pour moi dans jQuery 1.7.2 car j'essaie de définir l'index sélectionné de la liste en fonction de la valeur d'une zone de texte, et certaines valeurs de texte sont contenues dans plusieurs options. J'ai fini par utiliser ce qui suit:
la source
contains
complètement peut en fait accélérer les choses.$(this).parent().val($(this).val());
vous pourriez probablement faire les deux, mais pour moi, définir uniquement le parent aval()
fait l'affaire.J'ai rencontré le même problème ci-dessous est le code de travail:
Démo: http://jsfiddle.net/YRBrp/83/
la source
Cela a fonctionné pour moi:
$("#test").find("option:contains('abc')");
la source
$("#testselect").find("option:contains('option-text')").attr('value');
de cette façon, vous pouvez utiliser un événement comme.click()
pour modifier un paramètre.Il s'agit de la meilleure méthode pour sélectionner du texte dans la liste déroulante.
la source
this is your selected text plus more
.J'ai essayé quelques-unes de ces choses jusqu'à ce que j'en ai une qui fonctionne à la fois dans Firefox et IE. C'est ce que j'ai trouvé.
une autre façon de l'écrire de manière plus lisible:
Pseudocode:
la source
"#my-Select" + " option"
? Pourquoi pas juste"#my-Select option"
?Utiliser suivant
la source
Cela fonctionnera dans jQuery 1.6 (notez les deux-points avant le crochet d'ouverture), mais échoue sur les versions les plus récentes (1.10 à l'époque).
la source
$("#mySelect option").filter(function() { return this.text == "abc"; });
fonctionnera avec les dernières versions de jQuery .. Ou probablement d'une autre manière que vous préférez utiliser ..Pour la version 1.10.2 jquery ci-dessous a fonctionné pour moi
la source
Ce travail pour moi
la source
Cela fonctionne pour moi:
La
result
variable renverra l'index de la valeur de texte correspondante. Maintenant, je vais le définir en utilisant son index:la source
Soit vous parcourez les options, soit vous placez le même texte dans un autre attribut de l'option et vous sélectionnez avec cela.
la source
Cela fonctionnera également.
$ ('# test'). find ("select option: contains ('B')"). filter (": selected");
la source
ABC
.Comme décrit dans cette réponse , vous pouvez facilement créer votre propre sélecteur pour hasText. Cela vous permet de trouver l'option avec
$('#test').find('option:hastText("B")').val();
Voici la méthode hasText que j'ai ajoutée:
la source
Ça marche pour moi
Merci pour tous les messages.
la source