2013-06-30 15 views
8

Ich verwende diesen Code, um zu überprüfen, welche Sprache auf der Website ist, und dann aus dem Dropdown-Menü zu entfernen. Der Code funktioniert in Firefox, funktioniert aber nicht in Chrome und stoppt auch alle anderen Skripte. Dies ist der Code:jquery "enthält" -Code funktioniert nicht auf Chrom

var mylangme = $(location).attr('href'); 

if(mylangme.contains("/fr/")){ 
    mylangme="French"; 
    $(".subnav li:first-child").css("display","none"); 
        } 
if(mylangme.contains("/nl/")){ 
    mylangme="Dutch"; 
    $(".subnav li:nth-of-type(2)").css("display","none"); 
        } 
if(mylangme.contains("/ru/")){ 
     mylangme="Russian"; 
     $(".subnav li:nth-of-type(3)").css("display","none"); 
        } 
if(mylangme.contains("/en/")){ 
     mylangme="English"; 
     $(".subnav li:last-child").css("display","none"); 
        } 
+1

irgendwelche Fehler kommen? – kennypu

Antwort

14

@Quentin hat recht, Sie verwenden eine jQuery-Methode für ein Nicht-jQuery-Objekt. Sie können es mit der Methode indexOf reparieren, die Teil der Standard-JavaScript-Bibliothek ist und daher von allen Browsern unterstützt wird. Die indexOf Methode gibt -1 zurück, wenn die Zeichenfolge nicht gefunden wurde. Ihr Code würde dann so aussehen:

if(mylangme.indexOf("/fr/") != -1) { 
    mylangme="French"; 
    $(".subnav li:first-child").css("display","none"); 
} 
8

Das ist nicht jQuery ist. Die Methode attr gibt einen String zurück, bei dem es sich um Core-JavaScript handelt.

Die contains method für Strings wurde in JavaScript 1.9 eingeführt und wird nur von Firefox unterstützt.

Verwenden Sie indexOf oder das Polyfill, das auf der (oben verlinkten) MDN-Dokumentationsseite angegeben ist.

+1

+1 für die Erklärung, warum es mit Firefox funktioniert – Basj

Verwandte Themen