花了1天时间在看,请大家帮忙看看这段代码,不知道为什么会一直递归??
$(document).on("click",".layui-table-body table.layui-table tbody tr", function (e) { click_flag = false;
var index = $(this).attr('data-index');
var tableBox = $(this).parents('.layui-table-box');
if (tableBox.find(".layui-table-fixed.layui-table-fixed-l").length > 0) {
tableDiv = tableBox.find(".layui-table-fixed.layui-table-fixed-l");
} else {
tableDiv = tableBox.find(".layui-table-body.layui-table-main");
}
var checkCell = tableDiv.find("tr[data-index=" + index + "]").find("td div.laytable-cell-checkbox div.layui-form-checkbox I");
if (checkCell.length > 0) {
setTimeout(function(){
if(click_flag == true){
return;
}
checkCell.click();
console.log("单击1111113333");
},200);
// checkCell.click();
}
});
这段代码,在很多页面都能正常使用,是一个表格,点击行,选中的复选框的代码,
但是在某一个页面中,不知道为什么,会一直在递归,不停的调用,我注释了很多代码,花了一天时间,都没找到原因
回答:
dom结构没有列出来,大概率是checkCell.click()
触发tr内复选框的点击事件,然后点击事件又冒泡到这个tr上了,需要给复选框(或其父级至tr子级的某个元素)加上阻止冒泡的代码
回答:
既然不知道那就打断点呀,通过堆栈来看从哪里进来的,另外为什么要加setTimeout?如果是一个循环,你这个值可能会有问题,都打印出来并且断点看看。
以上是 花了1天时间在看,请大家帮忙看看这段代码,不知道为什么会一直递归?? 的全部内容, 来源链接: utcz.com/p/933321.html