En utilisant jQuery, je souhaite sélectionner un lien qui contient exactement une sorte de texte. Par exemple:
<p><a>This One</a></p>
<p><a>"This One?"</a></p>
<p><a>Unlikely</a></p>
J'ai essayé ceci:
$('a:contains("This One")')
Mais il choisit le premier ET le deuxième lien. Je veux juste le premier lien, qui contient exactement "Celui-ci". Comment puis je faire ça?
jquery
jquery-1.6
Endy Tjahjono
la source
la source
Réponses:
Tu peux le faire:
Référence: http://api.jquery.com/filter/
la source
return
. Je dois le changer pourfunction(index) { return (this.text === 'This One') }
Un de mes collègues a étendu jQuery avec une fonction pour faire ceci:
Le résultat est que vous pouvez sélectionner quelque chose par texte exact de cette façon:
Cela facilite les choses, car vous n'avez pas à vous souvenir de la syntaxe exacte à chaque fois. Son article entier est ici: jQuery Custom Selector pour sélectionner des éléments par texte exact: textEquals
la source
Pour développer la réponse de FishBasketGordo. Si vous essayez de faire la sélection sur une grande quantité d'éléments, utilisez d'
:contains()
abord pour affiner, puis appliquez le filtre.Cela améliorera la vitesse globale:
la source
a dû modifier la solution de Nariman pour être:
Sinon, ne fonctionnait pas sur Chrome (Linux)
la source
J'utilisais l'extension
Mais j'ai trouvé que l'implémentation ne fonctionne plus avec jQuery 1.7 (apparemment un changement dans Sizzla.filter). Après avoir lutté pendant un certain temps pour le faire fonctionner, j'ai simplement écrit un plugin jQuery pour accomplir la même chose.
Utilisation:
Je voulais juste partager, au cas où quelqu'un d'autre rencontrerait ceci (,
la source
La réponse de Narnian fonctionne donc plutôt bien. En l'utilisant dans la nature, cependant, j'ai rencontré des problèmes, où les choses que je m'attendais à trouver ne l'étaient pas. En effet, parfois, il y a un espace blanc aléatoire entourant le texte de l'élément. Je pense que si vous recherchez "Hello World", vous voudrez toujours qu'il corresponde à "Hello World", ou même "Hello World \ n". Ainsi, je viens d'ajouter la méthode "trim ()" à la fonction, qui supprime les espaces blancs environnants, et cela a commencé à mieux fonctionner. De plus, j'ai modifié les noms des variables pour être un peu plus clairs dans mon esprit.
Plus précisément...
Et note secondaire ... trim ne supprime que les espaces avant et après le texte recherché. Il ne supprime pas les espaces au milieu des mots. Je pense que c'est un comportement souhaitable, mais vous pouvez changer cela si vous le souhaitez.
la source
J'ai l'impression que je manque quelque chose en fonction de la réponse de tout le monde à filtrer, mais pourquoi ne pas simplement sélectionner le premier élément dans le tableau d'éléments retourné par «contient»?Cela ne fonctionne que si vous savez que le premier lien a la correspondance exacte que vous recherchez. Les autres réponses fonctionnent mieux, si vous ne savez pas dans quel ordre les liens seront.
la source
Comment obtenir la valeur sélectionnée à partir d'un drop-dwon:
console.log($("option").textEquals("Option One"));
- il retournera la valeur du menu déroulantla source
la source
Désolé, si cela correspond exactement à la réponse de quelqu'un ci-dessus,
Voici une sortie dans la console de la page de résultats de recherche Linkedin.
Il prend également en charge la sensibilité à la casse et n'utilise pas
:contains()
Edit (22 mai 2017): -
la source