Задать вопрос

Не пойму как скопировать?

var html = e.target.parentNode.querySelector('.firmware-window');
			$('.modal-wrapper').attr('class', 'modal-wrapper').html(html);
			html.classList.remove('hiden');


Код работает но за одним исключением - html он не копирует и помещает в modal-wrapper а вырезает и помещает. Как сделать что бы копировал, а не вырезал?
  • Вопрос задан
  • 115 просмотров
Подписаться 1 Простой 8 комментариев
Решения вопроса 2
@historydev Куратор тега JavaScript
Mistkerl, drück den Knopf.
- var html = e.target.parentNode.querySelector('.firmware-window');
+ var html = e.target.parentNode.querySelector('.firmware-window').innerHTML;
			$('.modal-wrapper').attr('class', 'modal-wrapper').html(html);
			html.classList.remove('hiden');
Ответ написан
Решение уважаемого historydev полностью работоспособно, к нему претензий нет никаких, но можно предложить и альтернативу при помощи cloneNode(true) (глубокое клонирование объекта DOM).
таким образом переменная html у нас остаётся объектом DOM, и её можно далее использовать по коду.
- var html = e.target.parentNode.querySelector('.firmware-window');
+ var html = e.target.parentNode.querySelector('.firmware-window').cloneNode(true);
			$('.modal-wrapper').attr('class', 'modal-wrapper').html(html);
			html.classList.remove('hiden');


cloneNode намного эффективнее, чем преобразование элемента в текст, а потом из текста в элемент, если исользовать подход с innerHTML, и если бы это был какой-то цикл с очень большим количеством элементов, то разница почти в 2 раза была бы видна невооружённым взглядом.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы