2009-03-06 25 views
16

Actualmente estoy tratando de desactivar un enlace con el siguiente selector de jQuery:¿Cómo uso jQuery para ignorar el caso al seleccionar?

$("a[href$=/sites/abcd/sectors]").removeAttr("href"); 

El problema es que a veces el href podría no ser siempre en minúsculas en la página. Cuando esto sucede, el selector ya no coincide.

¿Alguien sabe cómo evitar esto? ¿Puedo cambiar el comportamiento esta vez para ignorar el caso?

+0

¿Está utilizando la última versión de jQuery? Porque acabo de probar ese selector en FF con 1.3.2 en una página con HREF en mayúsculas y href en minúscula, y coincidía con ambos cada vez. ¿En qué navegador estás obteniendo ese problema? – cdmckay

+0

jQuery 1.3.2 con IE 7: solo se ha verificado dos veces y el problema sigue sucediendo. –

+0

@cdmckay: Creo que el OP significaba que la URL podría no ser siempre minúscula. –

Respuesta

14

Me encontré con esto yo mismo. Cambié la lógica un poco para permitirme compararlo sin caso. Requiere un poco más de trabajo, pero al menos funciona.

$('a').each(function(i,n) { 
    var href = $(n).attr("href"); 
    href = href.toLowerCase(); 
    if (href.endsWith('/sites/abcd/sectors')) 
     $(n).removeAttr('href'); 
}); 

Tendría que averiguar su propia lógica endsWith.

+0

Gracias, eso funcionó bien. Usé una expresión regular para los extremos con. Por cierto, toLower() debería ser toLowerCase(). –

+0

Ah, gracias. Hice esto de memoria y olvidé un pedazo. Lo he actualizado – EndangeredMassa

1

Es posible utilizar la función "es" en jQuery. No es sensible a mayúsculas y minúsculas.

$("a").each(function() { 
    if ($(this).is("a[href$=/sites/abcd/sectors]")) { 
     $(this).removeAttr('href'); 
    } 
    }) 
+0

He probado esto pero no funciona. – Magu

1

En primer lugar esto es NO VÁLIDA expresión, ya que contiene \,

Si desea utilizar cualquiera de los meta-caracteres (tales como !"#$%&'()*+,./:;<=>[email protected][\]^``{|}~) como

una parte literal de una nombre, debe escapar del personaje con dos barras diagonales inversas: \\.

Src: http://api.jquery.com/category/selectors/

por lo que debe escapar de la / a \\/

por lo que su expresión será $("a[href$=\\/sites\\/abcd\\/sectors]").removeAttr("href");

Cuestiones relacionadas