Comments 14
Можно же сделать empty, потом append :)
+1
Конечно можно и так. Но тогда придётся навешивать ещё и события к каждому добавляемому объекту.
Для большей ясности немного усложнил пример. Здесь внутри ячейки кнопка, для которой назначено событие.
$('#id_tr').html('new action');
Простой пример когда требуется именно innerHTML
Нужно динамически изменить строку таблицы. Новые данные для вставки передаются аяксом, в виде готового HTML, с уже навешаными событиями с правильными параметрами. Конечно можно перадавить данные в json и потом разбирать их и делать всё через DOM с навешиванием событий и прочим.
Но не легче ли просто заменить содержимое innerHTML на то что к нам пришло? По моему легче. + универсальность. Т.к. в этом случае отпадает необходимость рисовать обработчик для встивки в DOM для каждого случая.
Для большей ясности немного усложнил пример. Здесь внутри ячейки кнопка, для которой назначено событие.
$('#id_tr').html('new action');
Простой пример когда требуется именно innerHTML
Нужно динамически изменить строку таблицы. Новые данные для вставки передаются аяксом, в виде готового HTML, с уже навешаными событиями с правильными параметрами. Конечно можно перадавить данные в json и потом разбирать их и делать всё через DOM с навешиванием событий и прочим.
Но не легче ли просто заменить содержимое innerHTML на то что к нам пришло? По моему легче. + универсальность. Т.к. в этом случае отпадает необходимость рисовать обработчик для встивки в DOM для каждого случая.
0
ну да — тегов не видно
$('#id_tr').html('<td><button onclick=«my_f(new_id)»>new action</button></td>');
$('#id_tr').html('<td><button onclick=«my_f(new_id)»>new action</button></td>');
0
Странно, а мне наоборот работа через DOM кажется более правильной и логичной. Благо jquery позволяет через селекторы найти все что нужно с любой стороны
0
Этой весной столкнулся с такой же проблемой и пробовал решать ее через DOM. Во всех браузерах кроме IE работало нормально. Вместо нового объекта я получал в ИЕ всегда false =/
Пришлось переделывать на дивы.
Пришлось переделывать на дивы.
0
Интересует реализация на чистом javascript, т.к. нет желания изучать jquery
0
//http://msdn.microsoft.com/ru-ru/library/ms533897%28en-us,VS.85%29.aspx
var ro_tags = {COL:1, COLGROUP:1, FRAMESET:1, HEAD:1, HTML:1, STYLE:1, TABLE:1, TBODY:1, TFOOT:1, THEAD:1, TITLE:1, TR:1};
element.appendChild(document.createTextNode(new Date().getTime().toString()));
var old_html = element.innerHTML;
while(element.tagName in ro_tags) element = element.parentNode;
element.innerHTML = element.innerHTML.replace(old_html, arrhtml[id]);
* This source code was highlighted with Source Code Highlighter.
var ro_tags = {COL:1, COLGROUP:1, FRAMESET:1, HEAD:1, HTML:1, STYLE:1, TABLE:1, TBODY:1, TFOOT:1, THEAD:1, TITLE:1, TR:1};
element.appendChild(document.createTextNode(new Date().getTime().toString()));
var old_html = element.innerHTML;
while(element.tagName in ro_tags) element = element.parentNode;
element.innerHTML = element.innerHTML.replace(old_html, arrhtml[id]);
* This source code was highlighted with Source Code Highlighter.
0
Какой-то очень странный подход. Для того чтобы навесить событие зачем-то используется innerHTML, которое по-хорошему вообще не очень то здорово использовать, а потом поверх этого ставится заплатка на 1К кода.
+1
UFO just landed and posted this here
интересно, если покопаться ( то есть открыть исходник и сделать поиск ) то видно что
функция html(code) эквивалентна empty().append(code);
Но там же нашлась функция replaceWith(code) которая собственно по DOMу сама шариться и вставляет. По счастливому стечению обостоятельств именной ей я и вставляю готовые куски в таблицу.
функция html(code) эквивалентна empty().append(code);
Но там же нашлась функция replaceWith(code) которая собственно по DOMу сама шариться и вставляет. По счастливому стечению обостоятельств именной ей я и вставляю готовые куски в таблицу.
+1
UFO just landed and posted this here
Sign up to leave a comment.
innerHTML в таблицах