Один из способов сделать это:
$(document).ready(function() {
$('body').on('click', '.AddEl', function() {
$('.actions:first')
.parent()
.clone()
.attr('id', 'element_' + $('.actions').length)
.insertAfter($('.actions:last').parent());
});
$('body').on('click', '.RemoveEl', function() {
$(this).closest('.actions').parent().remove();
});
});
JS Fiddle demo.
Пожалуйста, обратите внимание, что я изменен ваш HTML, так что первый элемент клонировать теперь id="element_0"
, и целенаправленное, что и все впоследствии созданные элементы, с помощью селектора CSS:
div[id^=element] {
/* css */
}
Это может быть упрощенными, но это просто мои первые мысли.
Отредактировано предложить немного улучшенную версию, в том, что первоначальное добавление немного, или кажется немного более кратким, а также имеет средства для предотвращения дублирования id
s генерируется, если добавляются элементы/удалены:
$(document).ready(function() {
$('body').on('click', '.AddEl', function() {
var $elems = $('.actions').parent();
$elems
.first()
.clone()
.insertAfter($elems.last());
$('div[id^="element_"]').each(
function(i){
$(this).attr('id','element_' + i);
});
});
$('body').on('click', '.RemoveEl', function() {
$(this).closest('.actions').parent().remove();
});
});
JS Fiddle demo.
@DennisTraub, у меня есть проблемы с самого начала, как генерировать элементы ... –
исх: http://api.jquery.com/clone/ И могли бы вы объяснить, почему вы хотите сохранить подсчитанные идентификаторы? На самом деле, я не вижу смысла использовать их с помощью css, потому что вам понадобятся все возможные идентификаторы. – Yoshi
@Yoshi, спасибо, мне нужен идентификатор для извлечения данных позже, id css не должен быть id, может быть классом. Я рассматриваю его клон(). –