JQuery клонировать бесконечные времена? - PullRequest
0 голосов
/ 15 февраля 2010

Кажется, что jQuery .clone() работает, когда вы вставляете клонированный объект куда-то, вы не можете вставить его снова в другой раз, не клонировав исходный объект. Например, если вы сделаете это:

var cloned = $('#elem1').clone();
$('#elem2').after(cloned);
$('#elem2').after(cloned);

Будет скопирована только одна копия elem1, а второй вызов after ничего бы не сделал.

Есть ли способ не "очистить буфер обмена" после использования клонированного объекта? Прямо сейчас я справляюсь с клонированием объекта, прежде чем вставить его куда-нибудь. Есть ли лучший способ сделать это?

1 Ответ

3 голосов
/ 15 февраля 2010

Ваши две строки просто перемещают один и тот же набор элементов jQuery дважды. Если вы хотите новую копию, вы должны клонировать ее снова. after() ничего не клонирует. Это просто перемещает контент. clone() в данном случае это то, что создает контент.

var cloned = $('#elem1').clone();
$('#elem2').after(cloned);
cloned = $('#elem1').clone();
$('#elem2').after(cloned);

Также вам следует изменить или удалить атрибут ID, когда вы это сделаете:

var cloned = $('#elem1').clone().removeAttr("id");
$('#elem2').after(cloned);
cloned = $('#elem1').clone().removeAttr("id");
$('#elem2').after(cloned);

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

...