jquery удаляет / скрывает элемент (кнопка удаления), когда остается один экземпляр элементов-клонов

#jquery #filter #clone #parent-child #show-hide

#jquery #Фильтр #клонировать #родитель-потомок #показать-скрыть

Вопрос:

Задача клонировать элемент div (.cloneable) и его дочерние элементы формы, показать скрытую привязку, которая позволяет пользователю удалять экземпляры div.cloneable.

Проблема Я хочу скрыть привязку (идентификатор dltBtn), как только останется только один экземпляр .cloneable.

Попытки решения Я пытался изменить фильтры и селекторы в .cloneable или сделать так, чтобы он скрывался только после того, как остался один экземпляр, но безрезультатно.

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

Код приведен ниже:

 
 $(document).ready(function() { 
        $('#dltBtn').hide();
        $('#addBtn').click(function() {
            $('#dltBtn').show();
            var c = $('.nestedDiv').find('.cloneable:first').clone(true);
        // Loop through inputs under cloneable
        // resetId, reset value will go here stubbed out for now
        $('.cloneable:last').after(c);                  
        });         
        $('#dltBtn').click(function() {
        if (confirm('continue delete?')) {
           $(this).closest('.cloneable').remove();
           $('#dltBtn:last').hide($('.cloneable:child').length  == 0 );
        } else {
             $('#dltBtn:parent').hide($('.cloneable').length  == 1);
        }
        });
    });
  

Комментарии:

1. в ` $(‘.cloneable:last’).after(c); })` отсутствует точка с запятой

2. Спасибо, ianace. Исправлено. Я на самом деле опустил, когда исключал посторонний контент.

Ответ №1:

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

 clone.find(':input').val('').attr('id', function(index, oldId) { 
   return oldId   index;
})