我的动态创建的HTML字符串存在问题。
该代码正在循环执行。
首先,我进入else
代码块。
在第二个循环的迭代中,我得到了if(found.length > 0) {}
代码块的insode,在第一行中我看到返回的HTML没有关闭输入的斜杠/
。为什么?
var newHtml = $('');
if(file.updateWithId !== 0) {
var found = $(newHtml).find('input.del-file-cb[file-id="' + file.updateWithId + '"]');
if(found.length > 0) {
var replaceValue = found.parent().parent().html(); //here I see changed HTML
found.parent().parent().find('label.label-none:eq(0)').text(file.name);
found.parent().parent().find('label.label-none:eq(1)').text(file.type);
rowsAppends = rowsAppends.replace(replaceValue, $(newHtml).html());
newHtml = $(rowsAppends);
}
} else {
rowsAppends += '<tr><td class="text-left"><label class="label-none">' + file.name + '</label></td><td><label class="label-none">' + file.type + '</label></td><td><input class="del-file-cb" file-id="' + file.file_id + '" type="checkbox" /></td></tr>';
newHtml = $(rowsAppends);
}
答案 0 :(得分:4)
html()方法的输出取决于浏览器,并且可能并不总是与原始源匹配。 jQuery docs说:
此方法使用浏览器的innerHTML属性。有些浏览器可能 不返回完全复制原始HTML源的HTML 文献。例如,Internet Explorer有时会离开 如果属性值仅包含字母数字,则引用它们 字符。
例如,at least one report Internet Explorer会从{_ 1}}等自动关闭标记中删除斜杠。你可能无能为力。