2009-05-28 5 views
73

Я ищу несколько советов о том, как решить мою проблему.Можно ли клонировать объекты элемента html в JavaScript/JQuery?

У меня есть элемент html (например, поле ввода поля выбора) в таблице. Теперь я хочу скопировать объект и сгенерировать новый из копии, а также с помощью JavaScript или jQuery. Я думаю, что это должно сработать как-то, но сейчас я немного невежественен.

Что-то вроде этого (псевдо-код):

+3

http://stackoverflow.com/search?q=jquery+copy+element+content имеет кучу сопутствующих вопросов. –

ответ

34

JQuery путь (не самый эффективный):

Посмотрите на clone() метод JQuery

Использование кода вы можете сделать что-то вроде этого:

$('#ddl_1').clone().attr('id', newId).appendTo('p'); // append to where you want 
+22

ОЧЕНЬ важно изменить идентификатор, когда вы клонируете элемент. –

3

Это действительно очень просто в jQu чень:

$("#ddl_1").clone().attr("id",newId).appendTo("body"); 

Изменение .appendTo() конечно ...

+0

+1 ты бил меня! –

0

В одной строке:

$('#selector').clone().attr('id','newid').appendTo('#newPlace'); 
+1

Я не думаю, что это поможет, так как ваше значение атрибута - это строка, которая не изменится. –

238

С родной JavaScript:

newelement = element.cloneNode(bool) 

где булево указывает, является ли клонировать дочерние узлы или нет

+33

лучший ответ. не используйте jquery, где вам это не нужно. – luschn

+0

Выглядит хорошо ... но совместимость браузеров сомнительна с сегодняшнего дня. –

+11

@AniketSuryavanshi Я не уверен, что в частности 4 февраля, но [совместимость выглядит отлично сегодня] (http://quirksmode.org/dom/core/#t91) –

15

Да, вы можете скопировать детей одного элемента и вставить их в другой элемент:

var foo1 = jQuery('#foo1'); 
var foo2 = jQuery('#foo2'); 

foo1.html(foo2.children().clone()); 

Доказательство: http://jsfiddle.net/de9kc/

+0

Повторяющиеся идентификаторы будут проблемой с вашим подходом –

1

Попробуйте это:

$('#foo1').html($('#foo2').children().clone()); 
0

Вы должны выбрать "# 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/

2

Вы можете использовать клон() метод для создания копия ..

$('#foo1').html($('#foo2 > div').clone())​; 

FIDDLE HERE

 Смежные вопросы

  • Нет связанных вопросов^_^