Чтобы правильно с этим справиться, вам нужно что-то еще, например:
$(function() {
$('#addImg').live('click', function(e) {
for(var i=1; i<5; i++) {
if ($('#clone input[name="attachment_'+i+'"]').length == 0) break;
if(i == 4) return false;
}
$('<p><label><input type="file" name="attachment_'+ i +'" /> <a href="#" class="remImg">Remove</a></label></p>').appendTo('#clone');
e.preventDefault();
});
$('#clone').delegate('.remImg', 'click', function(e) {
if($('#clone input[name^="attachment_"]').length > 1) {
$(this).closest('p').remove();
}
e.preventDefault();
});
});
Вы можете проверить это (увидев сгенерированный HTML / узлы) здесь .
Что это делает по циклу и находит первое доступное i
для использования. В исходном коде предполагается, что последний - всегда удаленный, это может быть не так, и вам все равно придется повторять число. Вместо этого это цикл, тем не менее, получает первый доступный индекс и использует его ... если мы доберемся до 4
, и все они были использованы, прервать (вы можете добавить alert()
или что-то в этом if
, если ты хотел).
Также обратите внимание на использование класса для remImg
, поскольку он повторяется, и использование .delegate()
, чтобы быть немного более эффективным ... вы также можете, вероятно, использовать просто обычный .click()
обработчик на #addImg
, но я не уверен на 100%, где он находится.