Делает ли jQuery глубокую или неглубокую копию при использовании append () - PullRequest
2 голосов
/ 07 декабря 2011

Пример кода:

jQueryElement.append(jQueryOtherElement.remove("#some-selector"))

Сделает ли это копию моего элемента и добавит ли его или будет фактически использовать объекты DOM?

По сути, мне интересно, использует ли приведенный выше код innerHTML и если да, есть ли способ (в jQuery?) Добавить узлы DOM после удаления их из другого места.

Ответы [ 2 ]

3 голосов
/ 07 декабря 2011

На самом деле он будет использовать объекты DOM, удаленные вызовом .remove() - он использует не innerHTML, а фактические узлы DOM. Нет необходимости копировать, так как предыдущие объекты DOM были удалены из DOM и доступны для вставки.

Если вы посмотрите на код jQuery 1.7, функция удаления внутренне вызывает:

elem.parentNode.removeChild( elem )

, который просто удаляет узел из DOM. Все узлы остаются в объекте jQuery, поэтому при вызове append для этого объекта jQuery все они все еще доступны для непосредственного добавления к любой копии или преобразованию.

0 голосов
/ 07 декабря 2011

Да, он будет использовать объекты DOM.Они все еще существуют, но не внутри другого элемента.Объекты jQuery не волшебны:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...