Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как сохранить обработчики элемента, при изменения положения элемента в dom-дереве ? (https://javascript.ru/forum/events/42769-kak-sokhranit-obrabotchiki-ehlementa-pri-izmeneniya-polozheniya-ehlementa-v-dom-dereve.html)

Danxil 08.11.2013 18:22

Как сохранить обработчики элемента, при изменения положения элемента в dom-дереве ?
 
В общем есть блок(А) и блок(Б), они находятся в body, внутри блока(А) находится произвольный контент, у контента есть обработчики событий. Есть кнопка, при нажатии на которую блок(А) вместе со всем контентом, посредством innerHTML вырывается из body и апендится в блок(Б).

Проблема заключается в следующем - после вырывании блока(А) из body и вставке в блок(Б), с контента блока(А) слетают все обработчики. А так же все переменные в которых раньше хранились ссылки на элементы контента блока(А) теряют связь с этими элементами.

Подскажите как при изменении положения элемента в dom-дереве сохранить обработчики и ссылку на данный элемент?

ksa 08.11.2013 21:11

Danxil, ты хоть бы пример какой тестовый смастерил...

danik.js 08.11.2013 21:39

Цитата:

Сообщение от Danxil
Подскажите как при изменении положения элемента в dom-дереве сохранить обработчики и ссылку на данный элемент?

У тебя тут нифига не изменение положения! У тебя идет уничтожение старого и создание нового (из html-разметки старого). Тебе же нужно использовать dom-методы insertBefore, appendChild и прочие.

Danxil 08.11.2013 23:07

Цитата:

Сообщение от ksa (Сообщение 280168)
Danxil, ты хоть бы пример какой тестовый смастерил...

Вот сделал пример - http://danx-shop.pp.ua/ при наведении на блоки срабатывает обработчик и вешается класс. После нажатия на кнопку transport весь контент вырывается из боди и вставляется в новый блок, при этом обработчики с блоков слетают.

Цитата:

Сообщение от danik.js (Сообщение 280169)
У тебя тут нифига не изменение положения! У тебя идет уничтожение старого и создание нового (из html-разметки старого). Тебе же нужно использовать dom-методы insertBefore, appendChild и прочие.

А есть dom-метод аналогичный innerHTML (что бы вырывал все содержимое элемента и загонял его в переменную, при этом сохраняя все обработчики содержимого) ?

danik.js 08.11.2013 23:19

Цитата:

Сообщение от Danxil
А есть dom-метод аналогичный innerHTML (что бы вырывал все содержимое элемента и загонял его в переменную, при этом сохраняя все обработчики содержимого) ?

childNodes

Danxil 08.11.2013 23:33

Цитата:

Сообщение от danik.js (Сообщение 280173)
childNodes

Спасибо! Теперь все ок!


Часовой пояс GMT +3, время: 08:37.