У меня есть следующий javascript http://jsfiddle.net/847Kf/4/, который содержит счетчик в строках 14 и 36. Код работает, но когда я удаляю элемент, который я добавил и добавляю новый элемент, счетчик продолжается с того места, где он остался , Например: i insert 4 items 1, 2, 3, 4 теперь я удаляю второй элемент и добавляю новый элемент, поэтому у меня будет 1, 3, 4, 5. Как я могу сделать этот счетчик, когда я удаляю элемент счетчик должен сбросить и повторно отобразить значения в соответствии с примером: 1, 3, 4, 5 - удалил элемент, и теперь счетчик должен изменить значения для остального элемента на: 1, 2, 3, 4.Приращение счетчика javascript немного неверно
HTML :
<ul class="tags" data-prototype="<div><label class=" required">__name__</label><div id="task_tags___name__"><div><label for="task_tags___name___name" class=" required">Name</label><input type="text" id="task_tags___name___name" name="task[tags][__name__][name]" required="required" maxlength="255" /></div></div></div>">
</ul>
Javascript:
// setup an "add a tag" link
var $addTagLink = $('<a href="#" class="add_tag_link">Add a tag</a>');
var $newLinkLi = $('<li></li>').append($addTagLink);
jQuery(document).ready(function() {
// Get the ul that holds the collection of tags
var $collectionHolder = $('ul.tags');
// add the "add a tag" anchor and li to the tags ul
$collectionHolder.append($newLinkLi);
// count the current form inputs we have (e.g. 2), use that as the new
// index when inserting a new item (e.g. 2)
$collectionHolder.data('index', $collectionHolder.find(':input').length);
$addTagLink.on('click', function(e) {
// prevent the link from creating a "#" on the URL
e.preventDefault();
// add a new tag form (see code block below)
addTagForm($collectionHolder, $newLinkLi);
});
});
function addTagForm($collectionHolder, $newLinkLi) {
// Get the data-prototype explained earlier
var prototype = $collectionHolder.data('prototype');
// get the new index
var index = $collectionHolder.data('index');
// Replace '$$name$$' in the prototype's HTML to
// instead be a number based on how many items we have
var newForm = prototype.replace(/__name__/g, index);
// increase the index with one for the next item
$collectionHolder.data('index', index + 1);
// Display the form in the page in an li, before the "Add a tag" link li
var $newFormLi = $('<li></li>').append(newForm);
// also add a remove button, just for this example
$newFormLi.append('<a href="#" class="remove-tag">x</a>');
$newLinkLi.before($newFormLi);
// handle the removal, just for this example
$('.remove-tag').click(function(e) {
e.preventDefault();
$(this).parent().remove();
return false;
});
}
Это работает просто отлично, также другие ответы отсюда работают, но я выбрал этот для использования. –