Make jQuery :contains Case-Insensitive


Deprecated: array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead in /srv/ruban.stephanemourey.fr/src/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1530

Deprecated: array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead in /srv/ruban.stephanemourey.fr/src/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1530

Deprecated: array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead in /srv/ruban.stephanemourey.fr/src/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1530

Avant jQuery 1.8

// NEW selector
jQuery.expr[':'].Contains = function(a, i, m) {
  return jQuery(a).text().toUpperCase()
      .indexOf(m[3].toUpperCase()) >= 0;
};

// OVERWRITES old selecor
jQuery.expr[':'].contains = function(a, i, m) {
  return jQuery(a).text().toUpperCase()
      .indexOf(m[3].toUpperCase()) >= 0;
};

Avec jQuery 1.8 et au-dessus (jQuery 2 et jQuery 3 ?)

$.expr[":"].contains = $.expr.createPseudo(function(arg) {
    return function( elem ) {
        return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
    };
});

Dans ce dernier cas, il s'agit d'un overwrite, mais il est trivail de partir de l'exemple précédent pour en tirer la syntaxe à suivre pour créer un nouveau sélecteur. Je proposerais icontains, le préfixe i marquant souvent l'aspect insensible à la casse en PHP.