2011-01-05 4 views
4

Ich habe das folgende jQuery-Skript, das tatsächlich von Internet Explorer (7 und 8) ignoriert wird. Es funktioniert OK in FF und Chrome.jQuery funktioniert nicht auf IE

<script type="text/javascript" language="javascript"> 
    $("body").addClass("newclass"); 
</script> 

Es ist sehr einfach, aber ich weiß nicht, aus welchem ​​Grund IE es ignoriert. Wissen, dass der Code als dynamischer Inhalt mit JAVA geladen wird (was kein Problem sein sollte, da der Rest der Skripte funktioniert). Ich habe versucht, das Skript als eine Funktion in einer externen Datei zu benennen, aber es passiert auch nichts. Kann mir jemand helfen zu verstehen, wo mein Fehler ist? Oder hilf mir IE zu verstehen?

+2

Wo im Dokument läuft das? Im Kopf? –

+0

Würde nicht zu verrückt klingen zu sagen, aber vielleicht hat IE einen Fehler beim dynamischen Hinzufügen von Klassen zum Body-Tag ... vielleicht würde dies helfen: http://StackOverflow.com/Questions/2018001/How-Cani- add-a-class-to-the-body-tag-benutze-jquery – JKirchartz

Antwort

8

Oder vielleicht in dem ‚bereit‘ Ereignisse des Dokuments würde

$(document).ready(function() { 
    $('body').addClass('newclass'); 
}); 
0

Ich bin sicher, dass Sie Probleme in Firefox und Chrome auch wenn dies das Problem haben würden, aber versuchen

$(function() { 
    $('body').addClass('newclass'); 
}); 

nur um sicher zu sein, dass es aufgerufen wird, nachdem das Dokument geladen ist. Vielleicht braucht IE das.

0

Wickeln Sie es in eine $(document).ready(function(){ ... });

diese Weise JQuery läuft es nur besser werden, sobald die Seite vollständig geladen ist.

Wenn Sie dies nicht tun, wird der Code ausgeführt, sobald es möglich ist, möglicherweise bevor das DOM geladen wurde, so dass Sie möglicherweise kein body-Element zum Hinzufügen der Klasse haben.

Die Tatsache, dass einige Browser funktionieren und andere nicht implizieren, dass verschiedene Browser (a) die Seite mit unterschiedlichen Geschwindigkeiten laden und/oder (b) Erstladeaufgaben in einer anderen Reihenfolge ausführen. Aber darüber solltest du dir keine Sorgen machen. Rufen Sie einfach $.ready() an und alles wird von JQuery in der richtigen Reihenfolge für Sie erledigt.

Verwandte Themen