花了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

回到顶部