【发布时间】:2014-01-21 13:52:24
【问题描述】:
这个sn-p的代码...
sourcerow = $('#' + recordid);
item = sourcerow.find('td');
item.eq(1).text(itwcode);
在 Firefox 和 Chrome 中运行良好。
但是今天发现IE在这一行抛出了错误-item.eq(1).text(itwcode);
错误是Object does not support this property or method 'eq'
我想也许 'item' 没有被正确识别为 jquery 元素,所以我尝试了这个..
sourcerow = $('#' + recordid);
item = $(sourcerow.find('td'));
item.eq(1).text(itwcode);
同样的错误,所以我尝试了这个...
sourcerow = $('#' + recordid);
item = sourcerow.find('td');
$(item).eq(1).text(itwcode);
但现在 IE 从 jquery 库内部抛出错误...
Invalid calling object jquery-1.9.1.min.js line 3 character 7849
有没有办法解决或绕过这个错误?
编辑: 根据 mikakun 在 cmets 中的建议,我将变量名称从“item”更改为其他名称(“rowitem”),现在代码可以在 IE 中运行。不过这很奇怪,因为 item 不是保留字,而且它在其他浏览器中运行良好。
EDIT 2 或者 - 将名称保留为 'item' 但添加 'var' 关键字也修复了代码。 item 在另一个作用域中使用(但以非常相似的方式使用相同的类型)
【问题讨论】:
-
你说的是哪个版本的IE?
-
您是否尝试过单步调试 IE 调试器中的代码?您发布的代码似乎没有任何异常。
-
它出现在我的ie 9和同事的IE 8 Greg上,IE实际上在调试器中高亮了有问题的行。不过,我会尝试逐步完成.. 看看哪一行将我发送到 jquery 库以引发错误。
-
您知道,
sourcerow.find("td")可能没有找到您在 IE 中想象的那么多 TD 标签,这可能指向 HTML 语法错误导致 DOM 树在 IE 中不同. -
更改你的变量名! (即在某处声明了一个功能项
标签: javascript jquery internet-explorer-8 internet-explorer-9