2013-05-09 1 views
0

le problème est un peu délicat. Mon code pour charger dynamiquement des lignes de table dans une table, puis attacher des événements à toutes les cellules de la table ne fonctionne pas dans IE7/8. Mais parfois, cela fonctionne sans raison apparente.L'écouteur d'événement jQuery ne fonctionne pas dans IE 7/8

Voici un petit échantillon: http://jsbin.com/ivarus/6/edit

Ceci est une version simplifiée de ce que je fais dans mon application

Voici les étapes exactes à repro: 1) Ouvrez Internet Explorer et mis à IE7/8 à partir des outils de développement (non nécessaire si vous utilisez déjà IE8) 2) Accédez à Attendu: les clics attachés à TD fonctionnent dans la section Sortie En fait: les écouteurs d'événement ne commencent à fonctionner qu'après avoir appuyé sur "Exécuter le script"

Dans tous les autres navigateurs (IE9 +, Chrome, FF) cela fonctionne immédiatement. Pourquoi? Est-ce que je fais quelque chose de mal? Devrais-je chercher une approche alternative?

+0

nous parcourons le tableau à '9', alors qu'il n'a que 0' et' '1'. Le problème est probablement l'autoupdating dans JSbin ne fonctionne pas dans les anciennes versions d'IE. – adeneo

+0

Eh bien, cela fonctionne pour moi dans IE7 et IE8 Si je sauvegarde votre code de JSBIN à la page HTML et fonctionne sur ma machine sans aucun problème. Sans délais. –

+0

ce n'est pas une surprise que IE7/8 ne supporte pas quelque chose de différent des autres navigateurs. Je crois que c'est un problème de sécurité avec l'exécution de scripts sur IE7/8 qui pourrait contenir du contenu non sécurisé en particulier de différents domaine à rendre (seulement IE7/8 sait), ils sont également très sensibles aux erreurs, peu importe s'il s'agit d'erreurs de syntaxe. – Rohit416

Répondre

2

Vous devez attendre l'événement document prêt avant l'exécution de votre script. Entourez votre code comme ceci.

<script> 
$(function() 
    { 
     //your code here 
    }); 
</script> 
0

- problème dans append() fonctionne pas sur les anciens IE

if (($.browser.msie) & 
     (($.browser.version == '6.0') || ($.browser.version == '7.0'))) 
    { 
     var oldHtml = $('#select').html(); 
     $('#select').html(oldHtml + appendInput); 
    }