Existe-t-il une version insensible à la casse du sélecteur : contains jQuery ou dois-je faire le travail manuellement en boucle sur tous les éléments et en comparant leur .text () à ma chaîne?
javascript
jquery
jquery-selectors
Tapoter
la source
la source
Réponses:
Ce que j'ai fini par faire pour jQuery 1.2, c'est:
Cela étendra jquery pour avoir un sélecteur: Contains insensible à la casse, le sélecteur: contains reste inchangé.
Edit: Pour jQuery 1.3 (merci @ user95227) et plus tard, vous avez besoin
Edit: Apparemment accéder directement au DOM en utilisant
au lieu de
Dans l'expression précédente, cela accélère considérablement, alors essayez à vos risques et périls si la vitesse est un problème. (voir la question de @John )
Dernière modification: pour jQuery 1.8, cela devrait être:
la source
Pour le rendre éventuellement insensible à la casse: http://bugs.jquery.com/ticket/278
puis utilisez à la
:containsi
place de:contains
la source
Depuis jQuery 1.3, cette méthode est obsolète. Pour que cela fonctionne, il doit être défini comme une fonction:
la source
Si quelqu'un (comme moi) est intéressé, que signifient a et m [3] dans la définition Contains .
KEY / LEGEND: Paramètres rendus disponibles par jQuery pour une utilisation dans les définitions de sélecteur:
r = jQuery tableau d'éléments en cours d'examen. (par exemple: r.length = Nombre d'éléments)
i = index de l'élément actuellement examiné, dans le tableau r .
a = élément actuellement sous contrôle. L'instruction Selector doit retourner true pour l'inclure dans ses résultats correspondants.
m [2] = nodeName ou * que nous recherchons (à gauche de deux points).
m [3] = paramètre passé dans le: selector (param). Typiquement un numéro d'index, comme dans : nth-of-type (5) , ou une chaîne, comme dans : color (bleu) .
la source
Dans jQuery 1.8, vous devrez utiliser
la source
Une variante qui semble fonctionner légèrement plus rapidement et qui permet également les expressions régulières est:
Non seulement cela est insensible à la casse, mais il permet des recherches puissantes telles que:
$("p:containsCI('\\bup\\b')")
(Correspond à «Up» ou «up», mais pas à «upper», «wakeup», etc.)$("p:containsCI('(?:Red|Blue) state')")
(Correspond à "état rouge" ou "état bleu", mais pas à "état haut", etc.)$("p:containsCI('^\\s*Stocks?')")
(Correspond à "stock" ou "stocks", mais uniquement au début du paragraphe (en ignorant les espaces au début).)la source
Peut-être en retard ... mais,
Je préférerais suivre cette voie ...
De cette façon, vous ne falsifiez PAS le NATIVE '.contains' de jQuery ... Vous aurez peut-être besoin de celui par défaut plus tard ... s'il est falsifié, vous pourriez vous retrouver à stackOverFlow ...
la source
Le code de mise à jour fonctionne très bien dans la version 1.3, mais "contient" doit être en minuscules sur la première lettre contrairement à l'exemple précédent.
la source
:contains
et:Contains
serait à la fois le travail en même temps.Reportez-vous ci-dessous pour utiliser ": contient" pour rechercher du texte ignorant sa casse à partir d'un code HTML
Vous pouvez également utiliser ce lien pour trouver le code ignorant la casse en fonction de votre version de jquery, Make jQuery: contains Case-Insensitive
la source
Une version plus rapide utilisant des expressions régulières.
la source
J'ai eu un problème similaire avec ce qui suit ne fonctionne pas ...
Cela fonctionne et sans avoir besoin d'une extension
Cela fonctionne aussi, mais tombe probablement dans la catégorie "boucle manuelle" ....
la source
Nouvelle variable, je lui donne le nom de subString et je mets la chaîne que vous souhaitez rechercher dans certains éléments de texte. Ensuite, en utilisant le sélecteur Jquery, sélectionnez les éléments dont vous avez besoin comme mon exemple
$("elementsYouNeed")
et filtrez par.filter()
. Dans le,.filter()
il comparera chaque élément$("elementsYouNeed")
avec la fonction.Dans la fonction
.toLowerCase()
que j'utilise pour le texte de l'élément, aussi subString qui peut éviter la condition sensible à la casse et vérifier s'il y a une sous-chaîne dedans. Après cela, la.filter()
méthode construit un nouvel objet jQuery à partir d'un sous-ensemble des éléments correspondants.Vous pouvez maintenant obtenir les éléments de correspondance dans matchObjects et faire ce que vous voulez.
la source