【问题标题】:Internet Explorer JQuery ErrorInternet Explorer JQuery 错误
【发布时间】:2012-05-30 10:13:52
【问题描述】:

我正在使用 JQuery min 1.4.2。我有一个函数可以遍历几个表并添加一个带有数字的类:

$("#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 报告页面,我无权访问控制该页面的特定模板。

【问题讨论】:

  • 您是否尝试过使用最新的 jquery 版本来隔离这个错误?
  • 您的代码中的其他内容可能正在南下。简单的测试用例有效(jQuery 1.4.4 一个点发布修复的机会很小)。在 IE9 中测试 - jsfiddle.net/gjbzZ/1
  • 是的,我认为问题出在其他地方。删除该行,看看问题是否停止发生
  • 您的错误没有帮助..您正在显示缩小代码的错误,并且 n 行可能会合并为 1.. 使用非缩小版本,然后发布确切的错误.. 也是调用堆栈的屏幕截图会有所帮助.. 如有必要,请使用 IE 调试器
  • 为了调试你真的应该使用非缩小版的 jQuery

标签: javascript jquery internet-explorer error-handling


【解决方案1】:
$("#reportArea table", this).each(...
                       ^^^^

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

【讨论】:

  • 在第二部分中,他尝试了简单的 jquery,但它仍然失败,它正在循环通过 foreach 循环,这就是他的类被添加的原因。
  • 其实应该是$(this).find('#reportArea table').each(...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-01
  • 2012-11-26
  • 1970-01-01
  • 2012-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多