Создать элемент из элемента шаблона?

У меня есть некоторые проблемы с этим:

template = $("#template");
$(template).attr("id", "newid");

$(template).appendTo("body");

Что я хочу сделать, это назначить идентификатор шаблону, а затем изменить его. Проблема в том, что я в настоящее время ссылаюсь на фактический элемент шаблона, и поэтому идентификатор меняет это. При повторном использовании этого шаблона я не могу выбрать, когда id отличается.

Любые советы по оптимальному подходу?

Ответ 1

Клонировать объект:

template = $("#template").clone();
template.attr("id","newid");
template.appendTo("body");

Ответ 2

Еще три примечания к вашему коду:

Итак, ваш код будет выглядеть так:

var $template = $("#template").clone();
$template.attr("id", "newid");

$template.appendTo("body");

Ответ 3

HTML5 содержит элемент template:

contents = $('#template').html();
copy = $('<div id="copy"></div>');
$('body').append(copy.append(contents));

Часть HTML:

<html>
  <body>
    <template id='template'>
    </template>
  </body>
</html>

Недопустимый метод clone.

Ответ 4

Решение с 3 строками будет работать, но я предлагаю однострочное решение для стиля jQuery:

$('#template').clone().attr('id', 'newid').appendTo('body');

Ответ 5

Вы можете использовать метод clone() следующим образом:

template = $('#template').clone();
template.attr('id', 'newid');
template.appendTo('body');

Посмотрите http://api.jquery.com/clone/ для получения дополнительной информации.