Вы не должны иметь возможность перемещать DOM-узел с одного ownerDocument
на другой.DOM Level 1 Core говорит, что вы получите DOMException
с кодом WRONG_DOCUMENT_ERR
.Надо просто позвонить document.importNode
, чтобы получить новую копию контента.(Существует также document.adoptNode
, чтобы сделать это без копирования, но он более новый, поступающий в DOM Level 3 Core.
Однако:
в конкретном случаеHTML-документы, отличные от XML, многие браузеры позволят вам использовать узлы из одного документа в другом ownerDocument
.
IE не поддерживает importNode
. (Или adoptNode
, очевидно.) Вы можете либо отступить, вставив узлы напрямую, когда importNode
недоступен, либо сделать копию содержимого в новом документе вручную, либо с помощью DOM-хождения, либо с помощью сериализации / разбора HTML.потерять информацию; не ожидать восстановления произвольных свойств или событий EventListeners / IE-attach-events.)
Могут быть некоторые проблемы с указанием пути события в одном документе в коде издругой документ, в IE6-7. Когда документы закрыты / перемещены, вы можете получить неожиданное поведение.
В любом случае, jQuery для этого не создан. Он инкапсулируетссылка на йВладелец документа сам по себе, поэтому, когда вы вызываете $
из кода, созданного в документе A, вы будете использовать объект document
для документа A, даже если ваши узлы и путь к событию теперь находятся в документе B. Это будетвызвать много путаницы.В jQuery лучше всего хранить одну копию библиотеки для каждого документа и использовать только эту копию для взаимодействия с этим документом.