clone (true) + remove () против detach () в jQuery - PullRequest
4 голосов
/ 16 февраля 2010

Является ли использование

e = elem.clone(true);
elem.remove();

Идентичен

e = elem.detach();

Если позже я добавлю это с

e.appendTo($("#someDiv"));

В jQuery 1.4?
Сохранит ли метод clone (true) все, что делает detach ()?

Ответы [ 2 ]

2 голосов
/ 16 февраля 2010

То же самое, но отличается: если вы просто клонируете узел, не назначая его переменной, вы потеряете ссылку на скопированный узел и, следовательно, любую возможность получить доступ к его обработчикам событий и другим данным (не совсем верно, но это PITA). ).

EDIT
Да, удерживая ссылку на клонированный элемент, у вас есть точная копия (не забывайте об истинном параметре), которую позже можно добавить в DOM.

0 голосов
/ 16 февраля 2010

То, как я это читаю, будет эквивалентно:

Из документации для detach () :

Метод .detach () такой же, как .remove (), за исключением того, что .detach () сохраняет все данные JQuery, связанные с удаленные элементы. Этот метод полезно, когда удаляются элементы вставлен в DOM позже время.

Из документации для clone () :

.clone ([withDataAndEvents])

withDataAndEvents Логическое указание должны ли быть обработчики событий скопированы вместе с элементами. По состоянию на Данные элемента jQuery 1.4 будут скопированы а также.

...