J’essaie d’utiliser “contient” la case insensiblement. J’ai essayé d’utiliser la solution à la question suivante stackoverflow, mais cela n’a pas fonctionné:
Existe-t-il un jQuery insensible à la casse: contient le sélecteur?
Pour plus de commodité, la solution est copiée ici:
jQuery.extend( jQuery.expr[':'], { Contains : "jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0" });
Voici l’erreur:
Error: q is not a function Source File: /js/jquery-1.4.js?ver=1.4 Line: 81
Voici où je l’utilise:
$('input.preset').keyup(function() { $(this).next().find("li").removeClass("bold"); var theMatch = $(this).val(); if (theMatch.length > 1){ theMatch = "li:Contains('" + theMatch + "')"; $(this).next().find(theMatch).addClass("bold"); } });
Mon utilisation de la casse originale “contient” dans le même scénario fonctionne sans erreur. Quelqu’un a-t-il une idée? J’apprécierais.
C’est ce que j’utilise dans un projet en cours, je n’ai eu aucun problème. Voyez si vous avez plus de chance avec ce format:
jQuery.expr[':'].Contains = function(a, i, m) { return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0; };
Dans jQuery 1.8, l’API pour cela a changé, la version jQuery 1.8+ de ceci serait:
jQuery.expr[":"].Contains = jQuery.expr.createPseudo(function(arg) { return function( elem ) { return jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0; }; });
Vous pouvez le tester ici . Pour plus de détails sur plus de 1.8 sélecteurs personnalisés, consultez le wiki Sizzle ici .
Il convient de noter que la réponse est correcte mais ne couvre que :Contains
, et non l’alias :contains
qui pourrait conduire à un comportement inattendu (ou pourrait être utilisé par conception pour des applications avancées nécessitant des recherches sensibles et insensibles).
Cela pourrait être résolu en dupliquant l’extension pour l’alias:
jQuery.expr[':'].Contains = function(a, i, m) { return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0; }; jQuery.expr[':'].contains = function(a, i, m) { return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0; };
Il m’a fallu du temps pour comprendre pourquoi cela ne fonctionnait pas pour moi.
Je ferais quelque chose comme ça
$.expr[':'].containsIgnoreCase = function (n, i, m) { return jQuery(n).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0; };
Et partez :contains
seul …
DEMO
Alors pourquoi jQuery ne le supporte pas dans sa bibliothèque?! si c’est si facile …
parce que votre code passe le code de la dinde?
Peut-être en retard … mais
Je préfère aller dans ce sens ..
$.extend($.expr[":"], { "MyCaseInsensitiveContains": function(elem, i, match, array) { return (elem.textContent || elem.innerText || "").toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0; } });
De cette façon, vous ne falsifiez pas les NATIFS ‘.contains’ de jQuery … Vous aurez peut-être besoin de ceux par défaut plus tard … si vous les altérez , vous pourriez vous retrouver à stackOverFlow …
Je vais me permettre d’append mes amis:
$.expr[":"].containsNoCase = function (el, i, m) { var search = m[3]; if (!search) return false; return eval("/" + search + "/i").test($(el).text()); };
J’étais juste capable d’ignorer complètement la sensibilité à la casse de jQuery pour obtenir ce que je voulais en utilisant le code ci-dessous:
$.expr[":"].contains = $.expr.createPseudo(function(arg) { return function( elem ) { return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0; }; });
Vous pouvez utiliser ce lien pour trouver du code basé sur vos versions jQuery pour ignorer la sensibilité à la casse, https://css-sortingcks.com/snippets/jquery/make-jquery-contains-case-insensitive/
Aussi, si vous voulez utiliser: contient et faites des recherches, vous pouvez jeter un oeil à ceci: http://technarco.com/jquery/using-jquery-search-html-text-and-show-or-hide- en conséquence