0

動的に作成された HTML 文字列に問題があります。

そのコードはループで実行されています。

まず、elseコード ブロックに入ります。

2 番目のループの繰り返しで、if(found.length > 0) {}コード ブロックを挿入し、最初の行で、返された 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);
 } 
4

1 に答える 1

4

html() メソッドの出力はブラウザーに依存し、元のソースと常に一致するとは限りません。jQueryのドキュメントには次のように書かれています:

このメソッドは、ブラウザーの innerHTML プロパティを使用します。一部のブラウザーは、元のドキュメントの HTML ソースを正確に複製する HTML を返さない場合があります。たとえば、Internet Explorer では、属性値に英数字しか含まれていない場合、属性値を囲む引用符が省略されることがあります。

たとえば、Internet Explorer が のような自己終了タグからスラッシュを削除するという報告が少なくとも 1 つ<input>あります。それについてあなたができることはおそらく何もありません。

于 2012-08-17T14:11:11.483 に答える