minusculas mayusculas ignorar jquery contains case-sensitive case-insensitive

mayusculas - ¿Cómo hago jQuery Contains mayúsculas y minúsculas, incluido jQuery 1.8+?



ignorar mayusculas y minusculas java (6)

Esto es lo que estoy usando en un proyecto actual, no he tenido ningún problema. Vea si tiene mejor suerte con este formato:

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

En jQuery 1.8 la API para esto cambió, la versión jQuery 1.8+ de esto sería:

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

Puedes probarlo aquí . Para obtener más detalles sobre más de 1.8 selectores personalizados, consulte la wiki de Sizzle aquí .

Intento usar "contiene" mayúsculas y minúsculas de forma insensible. Intenté usar la solución en la siguiente pregunta de stackoverflow, pero no funcionó:

¿Hay un caso jQuery insensible: contiene el selector?

Para su comodidad, la solución se copia aquí:

jQuery.extend( jQuery.expr['':''], { Contains : "jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0" });

Aquí está el error:

Error: q is not a function Source File: /js/jquery-1.4.js?ver=1.4 Line: 81

Aquí es donde lo estoy usando:

$(''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"); } });

Mi uso del "delicado" mayúscula original en el mismo escenario funciona sin ningún error. ¿Alguien tiene alguna idea? Lo apreciaría.


Haría algo como esto

$.expr['':''].containsIgnoreCase = function (n, i, m) { return jQuery(n).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0; };

Y Salir :contains Solo ...

DEMO

Entonces, ¿por qué jQuery no lo admite en su biblioteca? si es así de fácil ...

porque ¿su código pasa el código de Turquía?


Me permitiré agregar mis amigos:

$.expr[":"].containsNoCase = function (el, i, m) { var search = m[3]; if (!search) return false; return eval("/" + search + "/i").test($(el).text()); };


Puede ser tarde ... pero,

Prefiero ir por este camino ...

$.extend($.expr[":"], { "MyCaseInsensitiveContains": function(elem, i, match, array) { return (elem.textContent || elem.innerText || "").toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0; } });

De esta manera, NO manipulas los NATIVE ''.contains'' de jQuery ... Es posible que necesites el predeterminado una vez más ... si se manipula, puedes volver a ...


Solo pude ignorar por completo la distinción entre mayúsculas y minúsculas de jQuery para lograr lo que quiero usando el siguiente código:

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

Puede usar este enlace para encontrar el código basado en sus versiones de jQuery para ignorar la distinción entre mayúsculas y minúsculas, css-tricks.com/snippets/jquery/…

Además, si desea utilizar: contiene y realiza alguna búsqueda, puede echar un vistazo a esto: http://www.ultechspot.com/jquery/using-jquery-search-html-text-and-show-or-hide-accordingly


Vale la pena señalar que la respuesta es correcta, pero solo cubre :Contains , y no el alias :contains que podría conducir a un comportamiento inesperado (o podría ser utilizado por diseño para aplicaciones avanzadas que requieren una búsqueda sensible e insensible).

Esto podría resolverse duplicando la extensión para el 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; };

Me tomó un tiempo averiguar por qué no funcionaba para mí.