сбивается событие
верстка
<div id="wrapper"> <div id="button"></div> </div> если на вложенный див поставить событие, и после динамически добавлять в родительський див данные(любые) к примеру : wrapper = document.getElementById('wrapper'); button = document.getElementById('button'); button.onclick = function() { wrapper.innerHTML += '<div>bla bla</div>'; }; то после первого добавления, все событие на дочерних элементах перестанут работать, как такое исправить? по новой раздавать событие не вариант |
Менять innerHTML у внутреннего дива, а не у внешнего. Вы же содержимое новое вставляете, у которого нет никаких событий.
|
czp,
В принципе, при добавках appendChild (ом), во внутрь внешнего, а не innerHTML - события вроде не теряюца, (*уточнил для мелких фишек, оставшихся внутри |
так там вставляет текст appendChild не умеет вроде как текст вставлять, аяксом возвращает текст вот и приходится вставлять, и если вы заметили добавлять к существующему
|
Цитата:
|
а есть еше альтернатива?
|
Цитата:
var d=document.createElement('div'); d.innerHTML='bla-bla'; wrapper.appendChild(d) |
а если там список?
<ul> <li></li> <li></li> </ul> добавляем еше <ul> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> </ul> как быть? |
без разницы все просто вставляется-главное знать куда вставлять -внутрь ul или после
то есть вам строка приходит вида? '<ul><li>....</ul>' |
Цитата:
var d=document.createElement('ul'); d.innerHTML='<li>bla-bla</li>'; while (d.children.length) wrapper.appendChild(d.children[0]) |
вы не поняли, если у меня события на клик по списку, если вставить li то события с уже существующих собьются, а если делать обвертку на li и потом ставить в ul получится каша, вот за что я
|
czp,
Мой скрипт вставляет детей обёртки, а не всю обёртку. |
точно не собразил сразу)спаисбо потестим, сразу вопрос а если там 150 будет детей?не будет лагать?
|
Цитата:
var d=document.createElement('ul'); d.innerHTML='<li>bla-bla</li>'; var fragment = document.createDocumentFragment(); while (d.children.length) fragment.appendChild(d.children[0]); wrapper.appendChild(fragment); |
Цитата:
|
Цитата:
|
Цитата:
|
ага, тогда такой вопрос, может он вам глупым покажется(я настолько просто JS не знаю), какой вариант лучше юзать?
вариант который предложил Раед или Melky? менее ресурсоемкий какой? |
insertAdjacentHTML вроде лучше
|
Цитата:
|
я вот такую еше штуку нашел DocumentFragment, это то что Раед описал(его способ), только уже изначально в JS встроен,
что скажете?ваше мнение http://learn.javascript.ru/multi-insert |
Здесь тоже есть
http://javascript.ru/optimize/documentfragment-0 Единственный недостаток-в него с помощью innerHTML нельзя вставлять кажется |
Часовой пояс GMT +3, время: 13:04. |