@ldmitriy

Jquery в чем отличие remove от detach?

Я прочитал не одну статью, попробовал пример отсюда:
detach
пробовал заменить метод detach на remove и результат тот же, также примеры с других сайтов не имеют разницы в этих методах, я конечно понял что:
remove - полностью удаляет элемент из DOM без его возврата
detach - удаляет элемент из DOM(но позже его можно будет восстановить на страницу)
  • Вопрос задан
  • 1271 просмотр
Решения вопроса 1
Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!
The .detach() method is the same as .remove(), except that .detach() keeps all jQuery data associated with the removed elements. This method is useful when removed elements are to be reinserted into the DOM at a later time.

detach - такой же как remove, за исключением того, что detach сохраняет все данные ассоциированные с удаляемыми элементами. Этот метод может быть использован, что бы повторно вставить удалённые элементы в "ДОМ" позже.

Насколько это понял я, и насколько это видно из примера, по ссылке которую Вы же привели - при удалении и повторной вставке этих элементов обратно - JQuery сохраняет все свойства элемента, включая сожержимое, атрибуты (в т.ч. текущие классы) и т.д. Так же, у этих элементов, судя по всему - сохраняются привязанные к ним события.

P.S. Если Вы просто удалите элемент, а потом вставите новый - то вставится именно новый элемент, события к нему придётся прикрутить заново, заново задать атрибуты/классы и т.д., с detach - элемент "вернётся" в том виде, в котором был удалён, т.е. по сути, вернётся именно тот элемент, который был. При удалении/вставке - будет вставлен уже новый элемент.

P.P.S. Т.е. это почти то же самое что скрыть элемент [hide()/show() в JQuery или diplay: block/none в CSS], что бы потом его показать, только физически, в DOM-дереве этот больше не присутствует.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы