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 ...
Entonces, ¿por qué jQuery no lo admite en su biblioteca? si es así de fácil ...
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í.