我有<table>
<thead>
和<tbody>
。现在在$(document).ready()
我有一个针对<tbody>
的函数,并对servlet进行ajax调用。然后,生成的Json
将逐行和逐个单元地插入到tbody中。
以下是代码片段。
var tbody = $('#topten');
$.each(responseJson, function(i, obj) {
var trkey = $('<tr>');
trkey.appendTo(tbody);
$.each(obj, function(K, V) {
if (K == 'abc') {
var td = $('<td>');
td.appendTo(trkey);
}
});
});
我从IE8控制台得到以下异常:
SCRIPT65535: Unexpected call to method or property access.
jquery-1.8.0.js, line 5565 character 5
碰巧是
this.appendChild( elem );
我的应用程序在IE9,10 FF,Chrome中完美运行......但不是IE8。
我可以问一下这个问题是否有解决方法?
由于
编辑:意识到我将appendTo()输入到导致问题的td的输入框中,这个代码片段很好。所以这个问题已经结束了。道歉。
答案 0 :(得分:1)
仅供参考: IE8,IE7和IE6不允许对该元素进行任何修改,包括 .append()
和.appendTo()
,因为它们不被视为标准或正确的DOM元素,因此被视为文本。确保关闭<div></div><a></a>
等元素,以便较旧的浏览器可以告诉您要执行的操作。
说明强>
.appendTo()
如果传递使用新窗口创建的DOM元素,则效果很好。但是如果从原始窗口创建失败(html字符串或之前使用$()创建)。
答案 1 :(得分:0)
尝试仅在重新定义此部分时才点击DOM:
var trkey = '<tr>';
$.each(obj, function (K, V) {
if (K == 'abc') {
trkey = trkey + '<td></td>';
}
});
trkey = trkey + '</tr>';
$(trkey).appendTo(tbody);