2011-01-05 3 views
4

J'ai le script jQuery suivant, qui est actuellement ignoré par Internet Explorer (7 et 8). Cela fonctionne bien dans FF et Chrome.jQuery ne fonctionne pas sur IE

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

C'est très simple, mais je ne sais pas pour quelle raison IE l'ignore. Sachez que le code est chargé en tant que contenu dynamique avec JAVA (ce qui ne devrait pas poser de problème puisque le reste des scripts fonctionne). J'ai essayé d'appeler le script en tant que fonction dans un fichier externe, mais rien ne se produit non plus. Quelqu'un peut-il m'aider à comprendre où est mon erreur? Ou m'aider à comprendre IE?

+2

Où ce document est-il en cours d'exécution? Dans la tête? –

+0

Cela ne semble pas trop fou à dire, mais peut-être que IE a un bug avec l'ajout dynamique de classes à l'étiquette du corps ... peut-être cela aiderait: http://stackoverflow.com/questions/2018001/how-can-i- ajouter-une-classe-au-corps-tag-using-jquery – JKirchartz

Répondre

8

Ou peut-être dans le cas « prêt » du document serait mieux

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

Je suis sûr que vous avez des problèmes dans Firefox et Chrome ainsi si tel était le problème, mais essayez

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

juste pour être sûr qu'il est appelé après que le document est chargé. Peut-être que IE a besoin de ça.

0

envelopper dans un $(document).ready(function(){ ... });

De cette façon, JQuery ne fonctionnera une fois la page a pleine charge. Si vous ne faites pas cela, le code sera exécuté dès que possible, ce qui peut être avant que le DOM ne soit chargé, donc vous ne pouvez pas avoir un élément body auquel ajouter la classe. Le fait que certains navigateurs fonctionnent et d'autres non implique que différents navigateurs (a) chargent la page à des vitesses différentes, et/ou (b) exécutent des tâches de chargement initiales dans un ordre différent. Mais vous ne devriez pas avoir à vous en préoccuper. Appelez simplement $.ready() et tout sera fait dans le bon ordre pour vous par JQuery.