обработчики jquery / воссоздание данных после уничтожения dom - PullRequest
0 голосов
/ 20 июля 2011

Похоже, что в jQuery после уничтожения элемента все данные, связанные с jQuery, уничтожаются, включая значения, сохраненные с помощью data (), все обработчики событий и т. Д. Однако сам dom сохраняется и может использоваться снова. Интересно, можно ли как-нибудь легко получить эти данные, или я должен как-то сам их сохранить и воссоздать?

Простой пример, написанный на jquery: http://jsbin.com/examuh/2/edit. Вы можете увидеть эффект на http://jsbin.com/examuh/2. Как видите, работает только третий обработчик, который добавляется после повторного добавления - даже тот, который был добавлен после уничтожения, но до повторного добавления не работает. По-видимому, DOM вместе с #id сохраняется.

PS: Мой реальный пример более сложный, и переделать его, чтобы переместить элемент dom в безопасное место перед тем, как уничтожить родителя, вероятно, будет довольно много хлопот.

1 Ответ

2 голосов
/ 20 июля 2011

Если вы хотите сохранить обработчики событий, данные jquery и т. Д., Вы можете использовать метод jQuery .detach () , чтобы удалить элементы из DOM. Затем вы можете позже вставить его обратно в дерево DOM, используя стандартные методы .append () / .prepend () и т. Д.

Если вы используете .remove (), то данные jQuery удаляются. Ваш пример демонстрирует, что установка свойства html () для div имеет эффект, аналогичный использованию .remove () в jQuery для дочерних элементов div.

var keepThis = $("#toRemove").detach();
//.. later on
$("#insert-point").append(keepThis);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...