我执行一个ajax调用,该调用存储一些数据并在表中添加一行。 此行的末尾有一个删除按钮,因此您可以根据需要立即删除创建的行。
由于某些原因,当我单击删除按钮时,我被重定向到我用来从数据库中删除数据的ajax调用的deleteurl。当我重新加载页面并按删除按钮时,它工作正常。
有人知道为什么会这样吗?
要添加的行:
<tr>
<td>test</td>
<td>
<form class="deleteBuildingForm" method="POST" action="http://127.0.0.1:8000/buildingimage/42" accept-charset="UTF-8">
<input name="_method" type="hidden" value="DELETE">
<input name="_token" type="hidden" value="EEV90wmDNLMd8hg9ilh6zdDAjVShXW9bfOCXdvml">
<button type="submit" class="btn btn-danger">
<i class="far fa-trash-alt"></i>
</button>
</form>
</td>
</tr>
我的jquery代码:
$('.deleteBuildingForm').on('submit', function(e) {
e.preventDefault();
axios.delete($(this).attr('action'), []).then(response => {
$(this).closest('tr').remove();
$('.successMessages').hide();
});
});
答案 0 :(得分:5)
我认为问题在于新行没有绑定事件处理程序,因为它们是动态创建的。
Event binding on dynamically created elements?
尝试将事件处理程序添加到将始终存在的文档中。
$(document).on('submit','.deleteBuildingForm' ,function(e) {
e.preventDefault();
axios.delete($(this).attr('action'), []).then(response => {
$(this).closest('tr').remove();
$('.successMessages').hide();
});
});