jQuery 1.8.0 - appendTo()在IE8中不起作用

时间:2013-07-18 15:20:51

标签: javascript jquery internet-explorer internet-explorer-8

我有<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的输入框中,这个代码片段很好。所以这个问题已经结束了。道歉。

2 个答案:

答案 0 :(得分:1)

仅供参考: IE8,IE7和IE6不允许对该元素进行任何修改,包括 .append().appendTo() ,因为它们不被视为标准或正确的DOM元素,因此被视为文本。确保关闭<div></div><a></a>等元素,以便较旧的浏览器可以告诉您要执行的操作。

Check this Fiddle

说明

.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);