2009-03-06 2 views
16

Ich versuche zur Zeit eine Verbindung mit dem folgenden jQuery-Selektor zu deaktivieren:Wie verwende ich jQuery, um die Groß-/Kleinschreibung bei der Auswahl zu ignorieren?

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

Das Problem ist, dass manchmal könnte die href nicht immer Kleinbuchstabe auf der Seite sein. Wenn dies geschieht, stimmt der Selektor nicht mehr überein.

Weiß jemand, wie man das umgehen kann? Kann ich das Verhalten dieses Falles einmal ignorieren?

+0

wird Verwenden Sie die neueste Version von jQuery? Weil ich gerade diesen Selektor in FF mit 1.3.2 auf einer Seite mit Großbuchstabe HREF und Kleinbuchstabe href getestet habe, und es jedes Mal übereinstimmte. In welchem ​​Browser tritt dieses Problem auf? – cdmckay

+0

jQuery 1.3.2 mit IE 7 - nur doppelt überprüft und das Problem ist immer noch passiert. –

+0

@cdmckay: Ich denke, die OP bedeutete, dass die URL nicht immer in Kleinbuchstaben sein könnte. –

Antwort

14

Ich lief selbst in diese. Ich habe die Logik ein wenig geändert, um es mir ohne Groß-/Kleinschreibung zu vergleichen. Es erfordert ein wenig mehr Arbeit, aber zumindest funktioniert es.

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

Sie müssten Ihre eigene endsWith Logik herausfinden.

+0

Danke, das hat gut funktioniert. Ich habe eine Regex für die Enden verwendet. Übrigens sollte toLower() toLowerCase() sein. –

+0

Ah, danke. Ich machte das aus dem Gedächtnis und vergaß einen Brocken. Ich habe es aktualisiert. – EndangeredMassa

1

Sie Funktion verwenden können "ist" in jQuery. Es ist nicht Groß-und Kleinschreibung.

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

Ich habe das getestet, aber es funktioniert nicht. – Magu

1

erster dieses UNGÜLTIG Ausdruck ist, da es \ enthält,

Wenn Sie eine der Meta-Zeichen (wie !"#$%&'()*+,./:;<=>[email protected][\]^``{|}~) als

eine wörtliche Teil eines verwenden möchten Name, müssen Sie das Zeichen mit zwei umgekehrten Schrägstrichen: \\.

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

so müssen Sie entgehen der / zu \\/

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

Verwandte Themen