layui-table滚轮控制

因为经常用layui前端框架,所以越来越觉得此前端框架有着一些问题,比如layui-table的重载(table.reload())。

Layui-table在重载的时候是整表刷新,直接显示到第一页,对于修改表格内的数据(table.edit())来说,使用体验极差,如果表格分页还好,可以设定一个全局变量来记录当前表格的页数,然后进行跳转。

然而,表格一旦不分页,这个情况就很尴尬了,无奈之下只能想到控制滚动条。layui-table滚轮控制_第1张图片

上图中可以看到Layui-table渲染后会在下方重新生成一个div,并且有个一个单独的标识lay-id=“table_Dd”有了这个就可以定位到这个表格。

可以看到 滚动条所在div class=“layui-table-body layui-table-main”,而滚动条属性则存在于class属性中的layui-table-main中。

知道了要操作的对象在哪了之后,开始动手。

先获取当前滚轮

var scrollTop;

    var dev_obj = $("div[lay-id='table_Dd']").val("");//定位到表格

    if (dev_obj != null) {//防止未获取到表格对象

        layuitable =dev_obj[0].getElementsByClassName("layui-table-main");//定位到layui-table-main对象

    }

    if (layuitable != null && layuitable.length > 0) {

        scrollTop =layuitable[0].scrollTop; //layuitable获取到的是class=layui-table-main的集合,所以直接获取其中的scrollTop属性。

   }

这是在重载之前做的事情,重载之后,需要把获取的属性重新放回去。

table.reload("table_Dd", {

            done: function (res, curr, count) {

                //滚轮控制

                dev_obj = $("div[lay-id='table_Dd']").val("");//依旧是获取表格对象

                if (dev_obj != null) {

                    layuitable =dev_obj[0].getElementsByClassName("layui-table-main");

                }

                if (layuitable != null && layuitable.length > 0) {//将属性放回去

                    layuitable[0].scrollTop = scrollTop;

                }

            }

});

虽然看起来很麻烦,但是对于用户来说体验感就好了不止一筹了。

你可能感兴趣的:(web,javascript,html)