微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – jQuery preventDefault无法处理我用另一个ajax调用添加的表单

我执行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();
    });
});

解决方法:

我认为问题是你的新行没有绑定到它们的事件处理程序,因为它们是动态创建的.

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();
    });
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐