2012-05-23 193 views
0

我正在使用JQuery min 1.4.2。我有过几个表进行迭代,并增加了一类具有附加了一些功能:Internet Explorer JQuery错误

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

出于某种原因,这个当我打开控制台但抛出一个错误在IE 8和IE9,Firefox和Chrome浏览器,我没有看到任何错误。在IE中的错误是:

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

如果我在IE调试器看48行,我看到:

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

我也试图改写我的代码这一点,但仍然得到了同样的错误:

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

奇怪的是,类仍然被添加到IE中的表中。

请注意,我会手动添加这些类,但这是一个JSP报告页面,我无法访问控制此页面的特定模板。

+2

你有没有尝试隔离这个错误 - 只是为了这个测试用例 - 使用最新的jQuery版本? – Lukx

+1

你的代码中的其他东西可能会南下。简单的测试用例工作(jQuery 1.4.4如此小的点发布修复某些东西的机会)。测试IE9 - http://jsfiddle.net/gjbzZ/1/ – mrtsherman

+0

是的,我认为这个问题是在别的地方。删除该行,看看问题是否停止发生 – Rodolfo

回答

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

什么是this在这里?它应该是DOM context。我认为你不需要它作为你的选择器,因为id是(应该是)唯一的。如果您没有在特定函数内调用该函数,则this keyword可能会引用全局对象并因此导致错误。

+0

在第二部分,他试图简单的jquery它仍然失败,它通过foreach循环循环,这就是为什么他的类正在增加。 – Baz1nga

+0

实际上应该是'$(this).find('#reportArea table')。(...' –

+0

啊,我错过了。 – Bergi