Как быстро переместить всех детей одного элемента в другой?
Как быстро переместить всех детей одного элемента в другой?
пока остановились на этом function replaceChilds(from, to) { var fragment = document.createDocumentFragment(); while (from.firstChild) fragment.appendChild(from.firstChild); to.appendChild(fragment); } |
godofjavascript,
innerHTML |
Цитата:
|
Цитата:
while (from.firstChild) а , ну да) Цитата:
п.с. я просто пилю Юракс (мега систему виджетов и шаблонизатор) и там шаблоны хранятся в свойстве нод .template так что innerHTML тут не катит, он же все перепарсит) |
Цитата:
|
Ты обращаешься в апи 1 раз фрагментом, и рендерится он один раз (грубо говоря)
а если по одному элементу пихаешь, то рендерится каждый раз грубо говоря. ГРУБО говоря. |
Цитата:
это не пакетное перемещение, это простое перемещение по-одному. это плохо, и можно лучше - вот, что я хотел сказать. (я могу подсказать, как сделать лучше, но попробуй сам додумать :)) |
Цитата:
Цитата:
|
может через clone родителя... ?
|
Цитата:
да и вообще их искать придётся заново -> клонирование не вариант Цитата:
Цитата:
причём не через display: none, а лучше через visibility: hidden, мне так кажется. |
ну я думал что то новое будет)
все ровно спасибо, чем display: none не угодил? |
ща
|
блин вломы, проверьте кто нить(?
я работаю жэ |
Цитата:
хотя. с другой стороны, разницы нет - детей то мы удалили, элемент стал пустым и сплющился (если ширина не задана) так что display: none , всё-таки, будет лучше, мне кажется :)) |
Жду тестов (на jsperf.com ? ) !!! Болею за documentFragment.
|
http://jsperf.com/best-children-moving-strategy
дополняйте (дописывайте справа /edit ) по-моему, я что-то в тесте намудрил :D |
|
В IE кто-нибудь нажмите кнопку (желательно в разных)
http://jsperf.com/children-moving |
Благодарю :thanks:
PS: а 9-10 нет ни у кого? |
|
Чтож, самый быстрый способ не в ие - через applyElement, так что используем только его!
Шучу конечно. Не знал, что создание временной переменной для доступа к ноде может оказаться накладнее чем повторное обращение как к свойству другой ноды. Ну и про бесполезность фрагмента в данном случае вобще молчу. |
Цитата:
|
Цитата:
|
Чем длиннее тем больше количество операций возможно за определенное для всех вариантов время, т.е. лучше.
|
Цитата:
то есть логика такая что мы просто берем и перемещаем детей по одному пока они не кончатся)???? понаоптимизрировали блин. |
Часовой пояс GMT +3, время: 08:19. |