Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.01.2013, 03:24
Профессор
Посмотреть профиль Найти все сообщения от godofjavascript
 
Регистрация: 11.12.2012
Сообщений: 265

Как быстро переместить всех детей одного элемента в другой?
Как быстро переместить всех детей одного элемента в другой?

пока остановились на этом

function replaceChilds(from, to) {

	var fragment = document.createDocumentFragment();

	while (from.firstChild)
		fragment.appendChild(from.firstChild);
	
	to.appendChild(fragment);
}

Последний раз редактировалось godofjavascript, 05.01.2013 в 14:48.
Ответить с цитированием
  #2 (permalink)  
Старый 05.01.2013, 03:26
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

godofjavascript,
innerHTML
Ответить с цитированием
  #3 (permalink)  
Старый 05.01.2013, 03:29
Профессор
Посмотреть профиль Найти все сообщения от godofjavascript
 
Регистрация: 11.12.2012
Сообщений: 265

Сообщение от Deff
innerHTML
а если там обработчики и прочее?
Ответить с цитированием
  #4 (permalink)  
Старый 05.01.2013, 05:24
Профессор
Посмотреть профиль Найти все сообщения от godofjavascript
 
Регистрация: 11.12.2012
Сообщений: 265

Сообщение от Дзен-трансгуманист
Ты должно быть имел ввиду
нет, именно так как я сделал, так как апенд чайлдПеремещает а не копирует

while (from.firstChild)

а , ну да)

Сообщение от Дзен-трансгуманист
ps: а все равно с этим фрагментом - мартышкин труд.
проведем тест? перемещать напрямую в элемент назначения или сначала в фрагмент и что быстрее?


п.с. я просто пилю Юракс (мега систему виджетов и шаблонизатор) и там шаблоны хранятся в свойстве нод .template так что innerHTML тут не катит, он же все перепарсит)

Последний раз редактировалось godofjavascript, 05.01.2013 в 05:29.
Ответить с цитированием
  #5 (permalink)  
Старый 05.01.2013, 12:59
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Дзен-трансгуманист Посмотреть сообщение
Да, это я тупанул.)


Сам проводи, мне если честно пофиг.)

Фрагмент нужен для копирования некоего шаблона, что абстрагирует тебя от его внутренней структуры.
А для перемещения?... ну типа, выберем ведро А, создадим бумажное ведро Б и пересыплем туда по одному все яблоки из ведра А, потом возьмем ведро Б, поместим его в ведро Ц и рванем на себя - теперь все яблоки в Ц! Гениально. (было бы немного странно, если это и впрямь окажется быстрее, чем сразу из А в Ц)
Ну ты же каждое яблоко осматривать и целовать не будешь, если будешь сыпать напрямую
Ответить с цитированием
  #6 (permalink)  
Старый 05.01.2013, 14:46
Профессор
Посмотреть профиль Найти все сообщения от godofjavascript
 
Регистрация: 11.12.2012
Сообщений: 265

Ты обращаешься в апи 1 раз фрагментом, и рендерится он один раз (грубо говоря)

а если по одному элементу пихаешь, то рендерится каждый раз грубо говоря. ГРУБО говоря.
Ответить с цитированием
  #7 (permalink)  
Старый 05.01.2013, 14:57
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от godofjavascript
ГРУБО говоря.
грубо говоря, когда ты во фрагмент элементы перемещаешь, они тоже должны вызывать перерасчёт (!) и перерисовку

это не пакетное перемещение, это простое перемещение по-одному.

это плохо, и можно лучше - вот, что я хотел сказать.

(я могу подсказать, как сделать лучше, но попробуй сам додумать )
Ответить с цитированием
  #8 (permalink)  
Старый 05.01.2013, 15:15
Профессор
Посмотреть профиль Найти все сообщения от godofjavascript
 
Регистрация: 11.12.2012
Сообщений: 265

Сообщение от melky
они тоже должны вызывать перерасчёт (!) и перерисовку
с чего ты взял?? он не находится в дом это обычный javascript обьект

Сообщение от melky
(я могу подсказать, как сделать лучше, но попробуй сам додумать )
подскажи, иначе нахрена я топик создал же) если ты знаешь то решение в студию
Ответить с цитированием
  #9 (permalink)  
Старый 05.01.2013, 15:20
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

может через clone родителя... ?
Ответить с цитированием
  #10 (permalink)  
Старый 05.01.2013, 15:25
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Deff
может через clone родителя... ?
если клонировать с потомками, то собьются обработчики

да и вообще их искать придётся заново -> клонирование не вариант
Сообщение от godofjavascript
с чего ты взял?? он не находится в дом это обычный javascript обьект
ну так ты же от родителя убираешь его (перемещаешь во фрагмент)

Сообщение от godofjavascript
подскажи, иначе нахрена я топик создал же) если ты знаешь то решение в студию
попробуй на момент перемещения потомков во фрагмент скрывать контейнер.

причём не через display: none, а лучше через visibility: hidden, мне так кажется.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заставить выполняться обработчик после всех имеющихся обработчиков данного элемен Анатолий Саратовцев jQuery 2 08.10.2012 18:49
Как сделать выборку среди детей одного элемента Почемучкин jQuery 4 29.08.2012 00:51
Как вывести всех детей? AquaGen Events/DOM/Window 7 22.06.2011 18:01
Как изменить свойство css у всех элементов одного класса AlexJ Events/DOM/Window 7 19.03.2011 06:25
Переменная от переменной или как к имени переменной конкатенировать значение другой Aderba jQuery 5 12.11.2008 15:25