Конечно можно и так. Но тогда придётся навешивать ещё и события к каждому добавляемому объекту.
Для большей ясности немного усложнил пример. Здесь внутри ячейки кнопка, для которой назначено событие.
$('#id_tr').html('new action');
Простой пример когда требуется именно innerHTML
Нужно динамически изменить строку таблицы. Новые данные для вставки передаются аяксом, в виде готового HTML, с уже навешаными событиями с правильными параметрами. Конечно можно перадавить данные в json и потом разбирать их и делать всё через DOM с навешиванием событий и прочим.
Но не легче ли просто заменить содержимое innerHTML на то что к нам пришло? По моему легче. + универсальность. Т.к. в этом случае отпадает необходимость рисовать обработчик для встивки в DOM для каждого случая.
Навесте обработчик на саму таблицу и смотрите на какую строку человек кликнул, а организовать хранение данных так, что бы до них было легко добраться и запустить событие с правильными параметрами — дело техники.
Странно, а мне наоборот работа через DOM кажется более правильной и логичной. Благо jquery позволяет через селекторы найти все что нужно с любой стороны
Этой весной столкнулся с такой же проблемой и пробовал решать ее через DOM. Во всех браузерах кроме IE работало нормально. Вместо нового объекта я получал в ИЕ всегда false =/
Пришлось переделывать на дивы.
Какой-то очень странный подход. Для того чтобы навесить событие зачем-то используется innerHTML, которое по-хорошему вообще не очень то здорово использовать, а потом поверх этого ставится заплатка на 1К кода.
интересно, если покопаться ( то есть открыть исходник и сделать поиск ) то видно что
функция html(code) эквивалентна empty().append(code);
Но там же нашлась функция replaceWith(code) которая собственно по DOMу сама шариться и вставляет. По счастливому стечению обостоятельств именной ей я и вставляю готовые куски в таблицу.
В jquery не копался, но мне кажется, что html(code) отличается от empty().append(code) также как innerHTML отличается от appendChild. Это хорошо видно в моей реализации на чистом Javascript-е.
innerHTML в таблицах