2013-06-30 24 views
8

Używam tego kodu, aby sprawdzić, jaki język jest na stronie, a następnie usunąć go z mojego rozwijanego menu. Kod działa w Firefoksie, ale nie działa na chrome i zatrzymuje również wszystkie inne skrypty. To jest kod:jquery "zawiera" kod nie działa na chrome

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

czy pojawią się jakieś błędy? – kennypu

Odpowiedz

14

@Quentin ma rację, używasz metody jQuery na obiekcie nie jQuery. Możesz to naprawić za pomocą metody indexOf, która jest częścią standardowej biblioteki JavaScript i jako taka jest obsługiwana przez wszystkie przeglądarki. Metoda zwróci -1, jeśli łańcuch nie zostanie znaleziony. Twój kod będzie wyglądał następująco:

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

To nie jest jQuery. Metoda attr zwraca ciąg, który jest rdzeniem JavaScript.

The contains method dla Strings został wprowadzony w JavaScript 1.9 i jest obsługiwany tylko przez Firefox.

Użyj indexOf lub polyfill podanej na (powyżej linkowanej) stronie dokumentacji MDN.

+1

+1 dla wyjaśnienia, dlaczego działa z Firefoksem – Basj