mirror of https://github.com/layui/layui
优化 table 的 `row` 事件机制,若目标元素为 `checkbox,radio`,则不触发 `row` 事件
parent
d8789d68d5
commit
7e51bce2a6
|
@ -2159,7 +2159,7 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
|
||||||
};
|
};
|
||||||
|
|
||||||
// 复选框选择(替代元素的 click 事件)
|
// 复选框选择(替代元素的 click 事件)
|
||||||
that.elem.on('click', 'input[name="layTableCheckbox"]+', function(){
|
that.elem.on('click', 'input[name="layTableCheckbox"]+', function(e){
|
||||||
var othis = $(this);
|
var othis = $(this);
|
||||||
var td = othis.closest('td');
|
var td = othis.closest('td');
|
||||||
var checkbox = othis.prev();
|
var checkbox = othis.prev();
|
||||||
|
@ -2181,6 +2181,7 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
|
||||||
} else {
|
} else {
|
||||||
that.setCheckData(index, checked);
|
that.setCheckData(index, checked);
|
||||||
that.syncCheckAll();
|
that.syncCheckAll();
|
||||||
|
layui.stope(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 事件
|
// 事件
|
||||||
|
@ -2198,20 +2199,24 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
|
||||||
});
|
});
|
||||||
|
|
||||||
// 单选框选择
|
// 单选框选择
|
||||||
that.elem.on('click', 'input[lay-type="layTableRadio"]+', function(){
|
that.elem.on('click', 'input[lay-type="layTableRadio"]+', function(e){
|
||||||
var othis = $(this);
|
var othis = $(this);
|
||||||
var td = othis.closest('td');
|
var td = othis.closest('td');
|
||||||
var radio = othis.prev();
|
var radio = othis.prev();
|
||||||
var checked = radio[0].checked;
|
var checked = radio[0].checked;
|
||||||
var index = radio.parents('tr').eq(0).data('index');
|
var index = radio.parents('tr').eq(0).data('index');
|
||||||
|
|
||||||
if(radio[0].disabled) return;
|
layui.stope(e);
|
||||||
|
if(radio[0].disabled) return false;
|
||||||
|
|
||||||
// 单选框选中状态
|
// 标注数据中的选中属性
|
||||||
|
that.setCheckData(index, checked, 'radio');
|
||||||
|
|
||||||
|
// 标注选中样式
|
||||||
that.setRowChecked({
|
that.setRowChecked({
|
||||||
type: 'radio',
|
type: 'radio',
|
||||||
index: index
|
index: index
|
||||||
});
|
}, true);
|
||||||
|
|
||||||
// 事件
|
// 事件
|
||||||
layui.event.call(
|
layui.event.call(
|
||||||
|
@ -2237,7 +2242,16 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
|
||||||
var index = othis.index();
|
var index = othis.index();
|
||||||
if(othis.data('off')) return; // 不触发事件
|
if(othis.data('off')) return; // 不触发事件
|
||||||
that.layBody.find('tr:eq('+ index +')').removeClass(ELEM_HOVER)
|
that.layBody.find('tr:eq('+ index +')').removeClass(ELEM_HOVER)
|
||||||
}).on('click', 'tr', function(){ // 单击行
|
}).on('click', 'tr', function(e){ // 单击行
|
||||||
|
// 不支持行单击事件的元素
|
||||||
|
var UNROW = '.layui-form-checkbox,.layui-form-radio,[lay-unrow]';
|
||||||
|
var container = $(this).find(UNROW);
|
||||||
|
if(
|
||||||
|
$(e.target).is(UNROW) ||
|
||||||
|
container[0] && $.contains(container[0], e.target)
|
||||||
|
){
|
||||||
|
return;
|
||||||
|
};
|
||||||
setRowEvent.call(this, 'row');
|
setRowEvent.call(this, 'row');
|
||||||
}).on('dblclick', 'tr', function(){ // 双击行
|
}).on('dblclick', 'tr', function(){ // 双击行
|
||||||
setRowEvent.call(this, 'rowDouble');
|
setRowEvent.call(this, 'rowDouble');
|
||||||
|
|
Loading…
Reference in New Issue