Похоже, что если вы используете подход, который вы пробуете:
var html = '<tr><td>This is a div</td></tr>';
$(tbody).html(html);
Вы будете использовать innerHTML.Чтобы избежать этого, вам нужно вместо этого создать DOM-узлы:
var cell = document.createElement('td');
var row = document.createElement('tr');
var tbody = document.getElementsByTagName('tbody')[0];
row.appendChild(cell);
tbody.appendChild(row);
Конечно, это добавит пустой td
к tr
и добавит его к tbody
.Чтобы разместить контент в ячейке, вам все равно придется использовать innerHTML
:
var cell = document.createElement('td');
cell.innerHTML = "This is text inside of the created 'td' DOM node.";
var row = document.createElement('tr');
var tbody = document.getElementsByTagName('tbody')[0];
row.appendChild(cell);
tbody.appendChild(row);
JS Fiddle demo .
Используя jQuery, это может быть сжатона:
var cell = $('<td />').text("This is text inside of the created 'td' DOM node.");
var row = $('<tr />');
var tbody = $('tbody:first');
row.append(cell).appendTo(tbody);
Демонстрация JS Fiddle .
Ссылка на сравнение подходов («ванильный» JavaScript против jQuery), в JS Perf.