jquery如何获取当前点击按钮所在的行,然后删除

使用datatable,我想要点击删除按钮删除当前所在行,但是我按如下方式删除的时候,获取到的DOM元素只有第一次是当前行,多点击几次之后就是把其他行的DOM也获取到了,如何只是获取到当前行。

t.row($(e).parents('tr')).remove().draw(false);

clipboard.png
这是代码结构

function removeStatus(e,tableId) {
    $("deleteModal .modal-body p").html("确认删除该条数据吗?");
    $("#deleteModal"). modal();
    $("#delete").click(function () {
        $("#deleteModal"). modal('hide');
        deleteTr(e);
        for(let s of statusList){
            if(s['tableId']===tableId){
                statusList.remove(s)
            }
        }
    })
}
function deleteTr(e){
    console.log($(e).parent('td').parent("tr").find("td:first-child").html())
    t.row($(e).parents('tr')).remove().draw(false);
}

clipboard.png
点击一次删除按钮就会console出多个行的值甚至多次console.

问题应该在

$("#delete").click(function () {
        $("#deleteModal"). modal('hide');
        deleteTr(e);
        for(let s of statusList){
            if(s['tableId']===tableId){
                statusList.remove(s)
            }
        }
    })

这个点击事件里,如果是在这个事件之外,一点问题没有,如果写在这个事件里就会这样。

阅读 8.3k
2 个回答

事件重复绑定。没运行一次removeStatus函数,$("#delete").click就被绑定一次,可以把这个事件绑定的代码放到外面,或者先解绑

$("#delete").unbind('click').click()

你的click事件重复绑定了,你每次触发removeStatus就给$("#delete")绑定了一次click,触发的越多,click就越多,而不会覆盖上次的,所以你得
$("#delete").unbind("click").click(xxxxx)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏