Я пытаюсь добавить 3 поля динамически (2 текстовых поля и 1 кнопка удаления). Кнопка добавления работает нормально. Проблема заключается в функции удаления. Он удаляет только кнопку удаления, но не остальные 2 поля.Ошибка при удалении добавленных полей динамически
Это мой HTML-код:
<div class="col-lg-12">
<div class="field_wrapper form-group col-sm-12">
<div class="form-group col-sm-4">
<input type="text" name="id[]" value="" class="form-control"/>
</div>
<div class="form-group col-sm-4">
<input type="text" name="name[]" value="" class="form-control"/>
</div>
<div class="form-group col-sm-4">
<a href="javascript:void(0);" class="add_button btn btn-primary" title="Add field">Adicionar Valor</a>
</div>
</div>
</div>
Это JavaScript:
<script type="text/javascript">
$(document).ready(function(){
var maxField = 10; //Input fields increment limitation
var addButton = $('.add_button'); //Add button selector
var wrapper = $('.field_wrapper'); //Input field wrapper
//var fieldHTML = '<div><input type="text" name="field_name[]" value=""/><a href="javascript:void(0);" class="remove_button btn btn-danger2" title="Remove field">Remover</a></div>'; //New input field html
var fieldHTML = '<div class="field_wrapper form-group col-sm-12"><div class="form-group col-sm-4"><input type="text" name="id[]" value="" class="form-control"/></div><div class="form-group col-sm-4"><input type="text" name="name[]" value="" class="form-control"/></div><div class="form-group col-sm-4"><a href="javascript:void(0);" class="remove_button btn btn-primary" title="Add field">Remover</a></div></div>'; //New input field html
var x = 1; //Initial field counter is 1
$(addButton).click(function(){ //Once add button is clicked
if(x < maxField){ //Check maximum number of input fields
x++; //Increment field counter
$(wrapper).append(fieldHTML); // Add field html
}
});
$(wrapper).on('click', '.remove_button', function(e){ //Once remove button is clicked
e.preventDefault();
$(this).parent('div').remove(); //Remove field html
x--; //Decrement field counter
});
});
</script>
Как я могу это исправить?
Используйте '$ (это) .closest удалить() ('field_wrapper.');.' Внутри удалить клик обратного вызова. Кнопка удаления вложенна в 'div', а' parent() 'будет получать только прямой восходящий элемент, поэтому он удаляет только элемент parent' div', а не всю разметку. – Tushar
Посмотрите, что у родителя в нем есть .... именно эта кнопка. Итак, перейдите в jquery api .... ищите другие методы обхода ... найду такие вещи, как 'parents()' и 'ближайшее()', и есть примеры для всех методов там – charlietfl
, прежде чем задавать вопрос. используйте инструменты разработчика браузера, чтобы проверить, соответствует ли указанный элемент или нет. затем используйте remove, hide, show и т. д. –