Я пытаюсь использовать метод клонирования jQuery для дублирования элемента ввода столько раз, сколько необходимо. Элемент ввода вложен в тег fieldset и другие теги div. Проблема в том, что клонированная группа элементов выходит в другом порядке. Что еще более важно, элемент INPUT больше не вложен в место, где он был, и это нарушает пользовательский интерфейс.
например, оригинальная структура (упрощенная)
<fieldset><div><input /></div></fieldset>
Клонированный исход:
<fieldset><div></div></fieldset><input />
Вот ссылка JSfiddle, показывающая проблему в действии: jsfiddle
Проблема связана с тем фактом, что вы используете инкрементные атрибуты id
и пытаетесь вычислить следующий в последовательности "на лету". Это всегда проблематично и редко является лучшим решением.
Используйте атрибуты class
для группировки похожих элементов - для чего они предназначены. Ваш код становится намного проще.
<div id="insert-placeholder"></div>
<fieldset class="template-image-upload-wrapper">
<legend>Image upload</legend>
<div class="form-group">
<div class="col-md-12">
<input class='template_image_upload' class='form-control input-md' title='Upload an image.' name='editPage' type='file' value='' />
<span class="help-block"></span>
</div>
</div>
</fieldset>
$(".template-image-upload-wrapper").clone(false).insertBefore("#insert-placeholder");
.find()
иandSelf()
соответствующий набор элементов, который используется вinsertBefore()
, отличается от того, который был возвращенclone()
- jsfiddle.net/arunpjohny/ VRRuf / 1