ajax循环添加的标签,再用循环添加对应的点击事件为什么点击效果始终在最后一位循环

这是循环代码
"<td><button>更新</button><button class='deleteInfo"+i+"' value='"+json[i].student.id+"'>删除</button></td></tr>";

这是循环添加点击的事件代码:

$(document).ready(function(){
    //删除人员信息
    for (var i = 0; i <5 ; i++) {
        $(document).on('click','.deleteInfo'+i,function(){
            alert($(".deleteInfo"+i).val());
        });
    }
});

 

最终无论点击哪个按钮都是打印最后的值,求解

let ,var的话涉及到闭包,引用i的最后值。而且也不需要用到i,函数体中this为当前点击的button

  for (let i = 0; i <5 ; i++) {
        $(document).on('click','.deleteInfo'+i,function(){
            alert($(".deleteInfo"+i).val());
aerlt(this.value)///
        });
    }

因为事件监听是异步所以要用let 看看这个https://zhuanlan.zhihu.com/p/51966830