Jquery append()方法,IE8中的奇怪行为

Jquery append()方法,IE8中的奇怪行为,jquery,Jquery,所以我尝试用javascript动态构建一个表,我已经加载了jQuery库,所以我选择使用它的append方法,因为它很容易使用,也很容易找到我的div 这在FireFox和Chrome中有效,但在IE8中失败。在IE8中没有错误,只是没有显示该表 $("#weatherFeed").append('<table class=\"weather\"><tr>'); for (var i = 0; i < 7; i++) { $("#weatherFeed")

所以我尝试用javascript动态构建一个表,我已经加载了jQuery库,所以我选择使用它的append方法,因为它很容易使用,也很容易找到我的div

这在FireFox和Chrome中有效,但在IE8中失败。在IE8中没有错误,只是没有显示该表

$("#weatherFeed").append('<table class=\"weather\"><tr>');
for (var i = 0; i < 7; i++) {
    $("#weatherFeed").append('<td>a</td>');
}
$("#weatherFeed").append('</tr><tr>');
for (var i = 0; i < 7; i++) {
    $("#weatherFeed").append('<td>b</td>');
}
$("#weatherFeed").append('</tr></table>');
然而,这在所有三个方面都很有效:

$("#weatherFeed").append('<table class=\"weather\"><tr><td>wth</td><td>wth</td>'
+ '<td>wth</td><td>wth</td></tr><tr><td>wth</td><td>test</td><td>test</td>'
+ '<td>test</td></tr><tr><td colspan=\"4\">MOOSE BALLS</td></table>');

这是我们的公司内部网,99%的用户都在IE8上。。我不熟悉javascript和jQuery,但我肯定我能找到实现这一目标的另一种方法,我只是觉得它应该可以工作,所以可能我做错了。

jQuery自动完成结束标记,所以你不需要自己完成。 您还应该附加到表而不是div

请尝试以下方法:

var table = $('<table class=\"weather\">');
$("#weatherFeed").append(table);

var tr = $('<tr>');
table.append(tr);
for (var i = 0; i < 7; i++) {
    tr.append('<td>a</td>');
}

tr = $('<tr>');
table.append(tr);
for (var i = 0; i < 7; i++) {
    tr.append('<td>b</td>');
}

请参阅fiddle:

我建议您在调试器中单步执行代码。你可以通过点击F12并进入脚本选项卡在IE中实现这一点。一旦到了那里,就可以为$weatherFeed.html设置手表。在IE7模式下,我在附加第一个TD后停止,我发现手表显示以下内容:

"<TABLE class=weather>\r\n<TBODY>\r\n<TR>\r\n<DIV></DIV></TR></TBODY></TABLE>\r\n<TD>a</TD>"

这告诉我,标记正在为您关闭,并且初始表和TR之后的任何后续追加都出现在您试图创建的表之外。

jQuery自动执行关闭标记,即在我有机会添加任何数据之前关闭我的表和行?在其他浏览器中也是如此,不仅仅是IE8。。。我在chrome上看到了你现在的代码,是不是很整洁?非常感谢Neal!!我的错^_^