Para realizar una selección de atributos insensible a mayúsculas y minúsculas, debe escribir una selección personalizada o función
$.expr[':'].iAttrStart = function(obj, params, meta, stack) {
var opts = meta[3].match(/(.*)\s*,\s*(.*)/);
return (opts[1] in obj) && (obj[opts[1]].toLowerCase().indexOf(opts[2].toLowerCase()) === 0);
};
Puede utilizar esta como esta:
$('input:iAttrStart(type, r)')
Esto coincidirá con cualquier input
elementos cuyo atributo type
comienza con R
o r
(por lo que se correspondería con RADIO
, radio
, RESET
o reset
). Este es un ejemplo bastante tonto, pero debería hacer lo que necesita.
Re del comentario de que la función es difícil de entender, lo explicaré un poco.
$.expr[':'].iAttrStart = function(obj, params, meta, stack) {
Esta es la firma estándar para crear selectores personalizados.
var opts = meta[3].match(/(.*)\s*,\s*(.*)/);
meta
es una matriz de detalles acerca de la llamada. meta[3]
es la cadena pasada como parámetro. En mi ejemplo, esto es type, r
. La expresión regular coincide con type
y r
por separado.
return (opts[1] in obj) && (obj[opts[1]].toLowerCase().indexOf(opts[2].toLowerCase()) === 0);
regreso si ambos son verdad:
- existe El atributo solicitado en este objeto (
opts[1] in obj
)
- El término de búsqueda (cambiado a minúsculas) se encuentra en el comienzo de el valor de atributo del elemento, también cambiado a minúsculas.
Pude haber hecho esto más fácil de leer usando la sintaxis jQuery en lugar de la sintaxis nativa JS, pero eso hubiera significado un rendimiento reducido.
I cosa aquí attr() de jQuery es la respuesta también: http: // stackoverflow. com/questions/187537/is-there-a-case-insensitive-jquery-contains-selector – Diego