当我尝试用$('#myDiv').html(s)
替换元素的html时,Chrome会崩溃。它适用于Firefox。 Chrome会尝试加载("等待localhost"或者#34;等待扩展AdBlock"或永远加载jQuery ...),直到它说网页崩溃为止。为什么会发生这种情况?如何解决?
此外,如果我不在功能中更改HTML,而是使用控制台,它可以正常工作!
function genTables(rows, numItems) {
var cols = parseInt(numItems / rows) + 1;
s = '<table><tbody>';
for (i = 0; i < cols; i++) {
for (j = 0; j < rows; j++) {
s += '<tr><td>foo</td></tr>';
}
if ((i + 1) != cols) {
s += '</tbody></table><table><tbody>';
}
};
s += '</tbody></table><div class="clear"></div>';
$('#myTables').html(s);
// This crashes Chrome as well
//$('#myTables').append($.parseHTML(s));
}
答案 0 :(得分:0)
我明白了,并且看了一眼。
稍后在我的函数中我有一个while循环:
while (newDiff > 0) {
$('#myTables table.hasPad').each(function() {
if (newDiff > 0) {
$(this).find('tr td:first-child').each(function() {
var currPad = parseInt($(this).css('padding-left').slice(0, -2));
$(this).css({'padding-left' : currPad + 1 + 'px'});
console.log(currPad + ' -> ' + (currPad + 1));
});
newDiff -= 1;
}
}
}
此循环将永远运行,因为没有
$('#myTables table.hasPad')
元素存在。切换我的函数的第9行
s += '</tbody></table><table class="hasPad"><tbody>';
这一切都有效。然而,这让我想知道,为什么它在Firefox中有用?