Возможно, вы создаете список дел, корзину покупок или что-то еще, что динамически добавляет элементы на экран, но также требует возможности их удаления, когда пользователи передумают.

Это можно сделать следующим образом:

Начнем с ‹button›, нажав, чтобы добавить контент в ‹div› в HTML:

<html>
  <head>
  </head>
  <body>
    <button id="my-button">Click to Add</button>
  
    <div id="content-container">
      <!-- Content will appear here -->
    </div>
  </body>
</html>

Затем давайте добавим функцию по щелчку, которая вызывается при нажатии кнопки в наш файл javascript:

var addedElements = [];
var elementNum = 0;
$('#my-button').on('click', function() {
   // code to add new element will be called here
});

Теперь давайте напишем код, который фактически создаст новый элемент:

var addedElements = [];
var elementNum = 0;
$('#my-button').on('click', function() {
  var codeToAddElement = '<div class="added-content"' + 
                          'id="add-' + addedElements.length + '">'+
                            'Add #' + elementNum +
                         '</div>';
  $('#content-container').append(codeToAddElement);
  addedElements.push(codeToAddElement);
  elementNum++;
});

Затем нам нужно добавить событие к новым элементам, чтобы пользователь мог их удалить:

var addedElements = [];
var elementNum = 0;
$('#my-button').on('click', function() {
  var codeToAddElement = '<div class="added-content"' + 
                          'id="add-' + addedElements.length + '">'+
                            'Add #' + elementNum +
                         '</div>';
  $('#content-container').append(codeToAddElement);
  addedElements.push(codeToAddElement);
  elementNum++;
});
$('body').on('click', '.added-content', function() {
  // code to remove from screen goes here
});

Внутри этой функции нам нужно получить идентификатор элемента, по которому был выполнен щелчок, с помощью $ (this), а затем использовать его для удаления элемента.

var addedElements = [];
var elementNum = 0;
$('#my-button').on('click', function() {
  var codeToAddElement = '<div class="added-content"' + 
                          'id="add-' + addedElements.length + '">'+
                            'Add #' + elementNum +
                         '</div>';
  $('#content-container').append(codeToAddElement);
  addedElements.push(codeToAddElement);
  elementNum++;
});
$('body').on('click', '.added-content', function() {
  var clickedId = $(this).attr('id');
});

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

var addedElements = [];
var elementNum = 0;
$('#my-button').on('click', function() {
  var codeToAddElement = '<div class="added-content"' + 
                          'id="add-' + addedElements.length + '">'+
                            'Add #' + elementNum +
                         '</div>';
  $('#content-container').append(codeToAddElement);
  addedElements.push(elementNum);
  elementNum++;
});
$('body').on('click', '.added-content', function() {
  var clickedId = $(this).attr('id');
  clickedId = clickedId.split('-')[1];
  addedElements.splice(clickedId, 1);
});

Наконец, мы изменим отображение массива addedElements. очистите содержимое # content-container и воссоздайте оставшиеся элементы:

var addedElements = [];
var elementNum = 0;
$('#my-button').on('click', function() {
  var codeToAddElement = '<div class="added-content"' + 
                          'id="add-' + addedElements.length + '">'+
                            'Add #' + elementNum +
                         '</div>';
  $('#content-container').append(codeToAddElement);
  addedElements.push(elementNum);
  elementNum++;
});
$('body').on('click', '.added-content', function() {
  var clickedId = $(this).attr('id');
  clickedId = clickedId.split('-')[1];
  addedElements.splice(clickedId, 1);
  
  var tempArr = addedElements.map(x => x);
  addedElements = tempArr.map(x => x);
$('#content-container').html("");
for (let i = 0; i<addedElements.length; i++) {
   var codeToAddElement = '<div class="added-content"' + 
                           'id="add-' + i + '">'+
                           'Add #' + addedElements[i] +
                          '</div>';
   $('#content-container').append(codeToAddElement);
}
});

Проверьте это на CodePen: https://codepen.io/joelmasters/full/NyyrNo/

Спасибо за чтение. Если у вас есть более эффективный способ сделать это, дайте мне знать!