Возможно ли клонировать элементы HTML в jQuery с новым идентификатором и именем?

Я хочу клонировать одну строку таблицы, но когда я клонирую, новый элемент name и id будет таким же, как и элемент, из которого он был клонирован.

Мне нужны клонированные элементы с разными name и id.

Ответ 1

Я бы передал prop карту пар ключ/значение для обновления этих значений после клонирования:

$("#selector").clone().prop({ id: "newId", name: "newName"});

Клонированные элементы не существуют в DOM, пока вы их не добавите, поэтому вам не придется беспокоиться о дублировании id, пока вы это не сделаете.

Пример: http://jsfiddle.net/BbpRA/

Обновление: в комментарии вы говорите, что у вас 20 input вам нужно клонировать. Я бы создал функцию, которая принимает элемент DOM и новый идентификатор и имя. Вы даже можете сделать из него небольшой плагин:

(function($) {
    $.fn.cloneWithProperties = function (properties) {
        return this.clone().prop(properties);
    };
})(jQuery)

Использование:

$("#selector").cloneWithProperties({ id: "newId", name: "newName" });

Ответ 2

Вы можете попробовать что-то вроде этого:

<div class="container">
  <div class="goodbye">
    Goodbye
    <div id="h1" class="hello">Hello</div>
  </div>
</div>

$('#h1').clone().attr('id','h2').appendTo('.container');

Ответ 3

Вы можете сделать что-то вроде:

var x = $("#selector").clone();

x.find('#oldID1').attr({id: "newID1", name: "newName1"});
x.find('#oldID2').attr({id: "newID2", name: "newName2"});
...

После его завершения вы можете добавить x туда, где хотите.

Заметьте, что #selector выше относится к вашему элементу строки таблицы.

Ответ 4

Вы можете автоматизировать ваш клон с помощью cloneJS. Это просто бета-версия: CloneJS