2009-03-06 8 views
16

Jestem obecnie próbuje wyłączyć link za pomocą następującego selektora jQuery:Jak używać jQuery do ignorowania wielkości liter podczas wybierania?

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

Problem polega na tym, że czasami href może nie zawsze być niższa przypadek na stronie. Kiedy tak się stanie, selektor przestaje pasować.

Czy ktoś wie, jak sobie z tym poradzić? Czy mogę zmienić zachowanie, aby zignorować przypadek?

+0

Czy korzystasz z najnowszej wersji jQuery? Ponieważ właśnie przetestowałem ten selektor w FF w wersji 1.3.2 na stronie zawierającej zarówno wielkie HREF, jak i małe litery href, i pasował on za każdym razem. W jakiej przeglądarce masz problem? – cdmckay

+0

jQuery 1.3.2 z IE 7 - tylko dwukrotnie sprawdzone i problem nadal się dzieje. –

+0

@cdmckay: Myślę, że OP oznaczał, że adres URL nie zawsze musi być pisany małymi literami. –

Odpowiedz

14

Wpadłem na to sam. Przestawiłem nieco logikę, by móc ją porównać bez żadnego przypadku. Wymaga trochę więcej pracy, ale przynajmniej działa.

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

Musiałbyś wymyślić własną logikę endsWith.

+0

Dzięki, to zadziałało dobrze. Użyłem wyrażeń regularnych dla końców. Przy okazji, toLower() powinno być do LowerCase(). –

+0

Ah, dzięki. Zrobiłem to z pamięci i zapomniałem kawałka. Zaktualizowałem to. – EndangeredMassa

1

Można użyć funkcji "jest" w jQuery. Nie jest rozróżniana wielkość liter.

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

Testowałem to, ale to nie działa. – Magu

1

Pierwszy to nieprawidłowy wyrażenie ponieważ zawiera \,

Jeśli chcesz użyć dowolnego z meta-znaków (takich jak !"#$%&'()*+,./:;<=>[email protected][\]^``{|}~) jako

dosłownym częścią imię i nazwisko, musisz uciec z postaci dwoma tylnymi ukośnikami: \\.

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

więc trzeba uciec / do \\/

więc wyrażenie będzie $("a[href$=\\/sites\\/abcd\\/sectors]").removeAttr("href");

Powiązane problemy