我遇到的问题是这样:
table中开启了复选框和行单击事件,但是点击复选框的时候会先执行单击事件(单击后跳转查看邮件详情)。这个问题很让我头疼,在社区查了很久,有人提到了使用stope(e)或者event.stopPropagation()来阻止冒泡,但是在这里根本行不通啊!因为 row() 中并没有提供event参数啊!
我只好妥协,将row事件换成rowDouble事件,但是双击查看详情确实很不方便,于是我想到了如下办法:
放弃他!
不要使用 row 来监听行了,虽然他更方便,但却无法和同在一行的其他事件兼容!文档中提到这个事件是从 layui 2.4.0 开始新增的,所以我想这也是他跟其他的监听事件不兼容的原因之一吧。
放弃row(),使用 tool() 就可以解决问题啦!
首先在方法渲染的时候,在cols中给除了复选框的列(这是我的需求,因为我需要监听复选框)设置参数event,然后通过tool进行监听,代码如下:
cols: [[
{ width: 50, type: 'checkbox' },
{ minWidth: 150, field: 'field', title: '区域',event:'singleclick' }
{ minWidth: 150, align: 'center', event: 'singleclick', field: 'amount', title: '邮件总数' },
{ minWidth: 150, align: 'center', event: 'singleclick', field: 'emergency', title: '急需回复' },
{ minWidth: 150, align: 'center', event: 'singleclick', field: 'waitreply', title: '超时未回复' }
]],
table.on('tool(mails)', function (obj) {
if (obj.event == 'singleclick')
window.location.href = "email_list.html?foldertype=" + folderType + "&fieldname=" + obj.data.field;
});
终于解决这个问题了,虽然是个小bug,但是不解决它总感觉像一根细小的鱼刺卡在喉咙里。现在舒服了,哈哈哈!