Можно ли клонировать объекты html-элемента в JavaScript/JQuery?
Я ищу несколько советов о том, как решить мою проблему.
У меня есть элемент html (например, поле ввода поля выбора) в таблице. Теперь я хочу скопировать объект и сгенерировать новый из копии, а также с помощью JavaScript или jQuery. Я думаю, что это должно работать как-то, но я немного невежественен в данный момент.
Что-то вроде этого (псевдокод):
oldDdl = $("#ddl_1").get();
newDdl = oldDdl;
oldDdl.attr('id', newId);
oldDdl.html();
Ответы
Ответ 1
Используя ваш код, вы можете сделать что-то вроде этого в простом JavaScript, используя метод cloneNode():
// Create a clone of element with id ddl_1:
let clone = document.querySelector('#ddl_1').cloneNode( true );
// Change the id attribute of the newly created element:
clone.setAttribute( 'id', newId );
// Append the newly created element on element p
document.querySelector('p').appendChild( clone );
Или используя метод jQuery clone() (не самый эффективный):
$('#ddl_1').clone().attr('id', newId).appendTo('p'); // append to where you want
Ответ 2
С родным JavaScript:
newelement = element.cloneNode(bool)
где логическое значение указывает, следует ли клонировать дочерние узлы или нет.
Вот полная документация по MDN.
Ответ 3
Да, вы можете копировать дочерние элементы одного элемента и вставлять их в другой элемент:
var foo1 = jQuery('#foo1');
var foo2 = jQuery('#foo2');
foo1.html(foo2.children().clone());
Доказательство: http://jsfiddle.net/de9kc/
Ответ 4
На самом деле это очень просто в jQuery:
$("#ddl_1").clone().attr("id",newId).appendTo("body");
Измените .appendTo(), конечно...
Ответ 5
Вы можете использовать метод clone() для создания копии.
$('#foo1').html( $('#foo2 > div').clone());
FIDDLE ЗДЕСЬ
Ответ 6
Попробуйте следующее:
$('#foo1').html($('#foo2').children().clone());
Ответ 7
В одной строке:
$('#selector').clone().attr('id','newid').appendTo('#newPlace');
Ответ 8
Вам нужно выбрать "# foo2" в качестве селектора. Затем введите html().
Вот html:
<div id="foo1">
</div>
<div id="foo2">
<div>Foo Here</div>
</div>
Вот javascript:
$("#foo2").click(function() {
//alert("clicked");
var value=$(this).html();
$("#foo1").html(value);
});
Вот jsfiddle: http://jsfiddle.net/fritzdenim/DhCjf/