0

我的动态创建的 HTML 字符串有问题。

该代码正在循环中执行。

首先,我进入else代码块。

在第二个循环的迭代中,我进入了if(found.length > 0) {}代码块,在第一行中,我看到返回的 HTML 没有关闭输入的 slash /。为什么 ?

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);
 } 
4

1 回答 1

4

html() 方法的输出取决于浏览器,并且可能并不总是与原始源匹配。jQuery 文档说:

此方法使用浏览器的 innerHTML 属性。某些浏览器可能不会返回与原始文档中的 HTML 源完全相同的 HTML。例如,如果属性值仅包含字母数字字符,Internet Explorer 有时会省略属性值的引号。

例如,至少有一份报告称 Internet Explorer 会从自闭合标签(如<input>. 您可能对此无能为力。

于 2012-08-17T14:11:11.483 回答