Проблема в вашем коде в том, что ваша переменная "that"
относится не к кнопке удаления, а к кнопке подтверждения в диалоговом окне, поэтому вы не можете использовать функцию closest()
. На этом этапе вы должны использовать определенную c идентификацию для вашей карты / кнопку удаления. Например:
$('button[data-hash="'+hash+'"]') .closest('div.card').hide();
Еще один момент, который я не вижу в вашем коде, - это передача переменных данных (act, para, ha sh) на кнопку подтверждения диалога. Например, ваш код $(this).attr('data-hash')
не может достичь значения с помощью кнопки удаления, поскольку $(this)
ссылается на кнопку подтверждения диалога. Решением этой проблемы является передача уникального идентификатора диалоговой кнопке.
$(".deleteBtn").on('click',function(){ //Add on click event to all delete buttons
$("#confirm").data("hash",$(this).data("hash")); //Pass hash value to dialog confirm button
});
$("#confirm").click(function (e) {
e.preventDefault();
var delBtn = $('button[data-hash="'+$(this).data("hash")+'"]'); //Get specific delete button element by passed hash value
const act = delBtn.attr('data-act'); //Get data variables from the delete button element
const para = delBtn.attr('data-para');
const hash = $(this).data("hash");
$.ajax({
url: '/include/ajax/mark_sold.php',
method: 'POST',
data: {action: act, para: para, hash: hash},
cache: false,
success: function (data, status) {
$("#fetched").html(data);
$('#myModal').modal('hide');
delBtn.closest('div.card').hide(); //Find closest .card element to the specified delete button
},
error: function (xhr, statusText, error) {
$("#fetched").show();
$("#confirmButton").hide();
}
});
});
Не забудьте добавить класс .deleteBtn
к кнопкам удаления.
Надеюсь, это поможет.