@ikfah012
Не самый умный парень в этом чате

Как удалять элементы, подгруженные динамически?

Добрый день.
У меня есть список на странице, подгружаемый с помощью ajax и проблема в том, что я не могу удалять из него элементы, которые загружены динамически, т.е. при перезагрузке страницы всё отрабатывает корректно, а когда загружается через ajax - нет.
<tbody id="table_ajax">
<?php foreach ($post as $vars): ?>
<tr>
   <input type="hidden" name="form_id" class="id_inp" value="<?=htmlspecialchars($vars['id'], ENT_QUOTES)?>">
   <td><?=htmlspecialchars($vars['item_name'], ENT_QUOTES)?></th>
   <td><?=htmlspecialchars($vars['item_qty'], ENT_QUOTES)?></td>
   <td><button type="button" name="delete_item" id="item_delete" class="close deleter">delete</button></td>
</tr>

$(document).on('click', 'button[class="close deleter"]', function() {
  event.preventDefault();
  let $row = $(this).closest('tr');
  let data = $row.find('input').serialize();
  $.ajax({
    type: "POST",
    url: "delete_me.php",
    data: data,
    success: function(html){
      $("#table_ajax").load('table.php');
      $('#order')[0].reset();
    }
  });
  return false;
});

Если я правильно понимаю, то при загрузке таблицы через ajax у меня на элементах нет слушателя. Я добавил document в скрипт, но всё равно срабатывает только при обновлении страницы.
Подскажите, пожалуйста, в чём может быть дело и в какую сторону смотреть?
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
@ikfah012 Автор вопроса
Не самый умный парень в этом чате
Правильный вариант был этот, я просто при выводе допустил ошибку - в table.php выводил скрытый инпут за пределами tr, потому и не работало.
тык
$(document).on('click', 'button[name="delete_item"]', function() {
  event.preventDefault();
    let $row = $(this).closest('tr');
    let data = $row.find('input').serialize();
    $.ajax({
            type: "POST",
            url: "delete_item.php",
            data: data,
            success: function(html){
              $("#table_ajax").load('table.php');
              $('#order')[0].reset();
          }
        });
        return false;
    });
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы