2012-05-23 6 views
0

J'utilise JQuery min 1.4.2. J'ai une fonction qui le compare à quelques tables et ajoute une classe avec un nombre fixé:Internet Explorer JQuery Erreur

$("#reportArea table", this).each(function(i){ 
$(this).addClass("table-" + i); 
}); 

Pour une raison quelconque cela jette une erreur dans IE 8 et IE9, cependant, dans Firefox et Chrome quand j'ouvre la console, Je ne vois aucune erreur. L'erreur dans IE est:

Message: Invalid argument. 
Line: 48 
Char: 1 
Code: 0 
URI: /js/jquery-min.js 

Si je regarde la ligne 48 dans le débogueur IE, je vois ceci:

a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue; etc.. 

J'ai aussi essayé reformulant mon code à cela, mais toujours obtenir la même erreur:

$('#reportArea table:eq(0)').addClass('table-0'); 
$('#reportArea table:eq(1)').addClass('table-1'); 

La partie impaire est que la classe est toujours ajoutée aux tables dans IE.

Notez que j'ajouterais les classes manuellement mais c'est une page de rapport JSP et je n'ai pas accès au modèle spécifique qui contrôle cette page.

+2

Avez-vous essayé d'isoler cette erreur - juste pour ce cas de test - en utilisant la dernière version de jquery? – Lukx

+1

Quelque chose d'autre dans votre code va probablement vers le sud. Le cas de test simple fonctionne (jQuery 1.4.4 si peu de chance qu'une version ponctuelle ait corrigé quelque chose). Testé dans IE9 - http://jsfiddle.net/gjbzZ/1/ – mrtsherman

+0

oui je pense que le problème est ailleurs. Supprimer cette ligne et voir si le problème s'arrête – Rodolfo

Répondre

-1
$("#reportArea table", this).each(... 
         ^^^^ 

Qu'est-ce que this ici? Ce devrait être un DOM context. Je ne pense pas que vous en ayez besoin pour votre sélecteur car les identifiants sont (devraient être) uniques. Si vous n'appelez pas cette fonction dans une fonction spécifique, le this keyword peut faire référence à l'objet global et provoquer l'erreur.

+0

dans la deuxième partie, il essaie la jquery simple, il échoue toujours et il est en boucle à travers la boucle foreach et c'est pourquoi ses classes sont ajoutées. – Baz1nga

+0

Devrait être '$ (this) .find ('# table reportArea'). Each (...' –

+0

Ah, j'avais raté ça. – Bergi