Je suis après la documentation sur l'utilisation de caractères génériques ou des expressions régulières (pas sûr sur la terminologie exacte) avec un sélecteur jQuery.
J'ai cherché cela moi-même, mais j'ai été incapable de trouver des informations sur la syntaxe et comment l'utiliser. Est-ce que quelqu'un sait où est la documentation de la syntaxe?
EDIT: Les filtres d'attributs vous permettent de sélectionner en fonction des modèles d'une valeur d'attribut.
James Padolsey a créé un merveilleux filtre qui permet à Regex d'être utilisé pour la sélection.
Dites que vous avez la div
suivante:
<div class="asdf">
Padolsey :regex
filtre :regex
peut le sélectionner comme suit:
$("div:regex(class, .*sd.*)")
Vérifiez également la documentation officielle sur les sélecteurs .
Vous pouvez utiliser la fonction de filter
pour appliquer une correspondance regex plus compliquée. Voici un exemple qui correspond simplement aux trois premières divs (live demo ici ):
<div id="abcd"></div> <div id="abccd"></div> <div id="abcccd"></div> <div id="abd"></div>
$('div') .filter(function() { return this.id.match(/abc+d/); }) .html("Matched!");
Ceux-ci peuvent être utiles.
Si vous trouvez par Contient, ce sera ainsi
$("input[id*='DiscountType']").each(function (i, el) { //It'll be an array of elements });
Si vous trouvez par Starts With, alors ce sera comme ça
$("input[id^='DiscountType']").each(function (i, el) { //It'll be an array of elements });
Si vous trouvez par Terminer avec alors, ce sera comme ça
$("input[id$='DiscountType']").each(function (i, el) { //It'll be an array of elements });
Si vous souhaitez sélectionner des éléments dont l' ID n'est pas une chaîne donnée
$("input[id!='DiscountType']").each(function (i, el) { //It'll be an array of elements });
Si vous souhaitez sélectionner des éléments dont l' identifiant contient un mot donné, délimité par des espaces
$("input[id~='DiscountType']").each(function (i, el) { //It'll be an array of elements });
Si vous souhaitez sélectionner des éléments dont l' id est égal à une chaîne donnée ou qui commence par cette chaîne suivie d'un trait d'union
$("input[id|='DiscountType']").each(function (i, el) { //It'll be an array of elements });
Si votre utilisation de l'expression régulière est limitée au test si un attribut commence par une certaine chaîne, vous pouvez utiliser le sélecteur ^ jquery
Par exemple, si vous souhaitez sélectionner uniquement div avec id commençant par "abc", vous pouvez utiliser $("div[id^='abc']")
Beaucoup de sélecteurs très utiles pour éviter l'utilisation de regex peuvent être trouvés ici: http://api.jquery.com/category/selectors/attribute-selectors/
var test = $('#id').attr('value').match(/[^a-z0-9 ]+/);
Voici!
Ajoutez une fonction jQuery,
(function($){ $.fn.regex = function(pattern, fn, fn_a){ var fn = fn || $.fn.text; return this.filter(function() { return pattern.test(fn.apply($(this), fn_a)); }); }; })(jQuery);
Alors,
$('span').regex(/Sent/)
Sélectionnera tous les éléments de portée avec des correspondances de texte / Envoyé /.
$('span').regex(/tooltip.year/, $.fn.attr, ['class'])
Sélectionnera tous les éléments de portée avec leurs classes /tooltip.year/.
Les ID et les classes sont toujours des attributs, vous pouvez donc appliquer un filtre d'attribut regexp si vous sélectionnez en conséquence. Lire la suite ici: http://rosshawkins.net/archive/2011/10/14/jquery-wildcard-selectors-some-simple-examples.aspx
$("input[name='option[colour]'] :checked ")
Si vous souhaitez simplement sélectionner des éléments contenant une chaîne donnée, vous pouvez utiliser le sélecteur suivant:
$(':contains("search string")')