layui 表格里添加开关,点击开关时,能不能获取id?

提问 已结
21 491
匹诺曹926
匹诺曹926 2018-9-10
悬赏:20飞吻
版本:layui 浏览器:谷歌
以前时把id列隐藏,然后根据节点找id,现在直接把隐藏的id列换成了序号显示,然后根据节点是绝对找不到的。layui监听单元格和监听行都能直接获取请求返回的值,我想问问监听开关能不能获取啊?如果不能,还有什么其他办法吗?
回帖
  • 这个可能稍微需要有点绕但是可以做到,form表单监听监听开关,会得到这个开关原始的节点,然后找到这个节点所在的tr,里面有个data-index这个就是当前行在表格缓存中的数据的的下标,所以有了这个下标就好办了,
    table.cache【tableId】【当前开关所在tr的data-index】【id】
    0 回复
  • swimming
    2018-9-10
    https://www.layui.com/demo/form.html
    0 回复
  • Dopamine
    2018-9-10
    //监听工具条
    table.on('tool(test)', function(obj){ //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值"
    var data = obj.data; //获得当前行数据
    var layEvent = obj.event; //获得 lay-event 对应的值(也可以是表头的 event 参数对应的值)
    var tr = obj.tr; //获得当前行 tr 的DOM对象

    if(layEvent === 'detail'){ //查看
    //do somehing
    } else if(layEvent === 'del'){ //删除
    layer.confirm('真的删除行么', function(index){
    obj.del(); //删除对应行(tr)的DOM结构,并更新缓存
    layer.close(index);
    //向服务端发送删除指令
    });
    } else if(layEvent === 'edit'){ //编辑
    //do something

    //同步更新缓存对应的值
    obj.update({
    username: '123'
    ,title: 'xxx'
    });
    }
    });
    0 回复
  • @swimming 文档上没有怎么获取table中id的例子。
    0 回复
  • @Hanjialin 你这种方法获取三个undefined。
    0 回复
  • swimming
    2018-9-10
    @匹诺曹926 table的id都是自己设 这样可以拿到表格中所有的数据
    0 回复
  • @swimming 拿不到data,难受!!!
    [委屈]
    这是结果:{"data":[],"isAll":false}
    0 回复
  • swimming
    2018-9-10
    @匹诺曹926 你是监听那个开关,获取这一行的数据还是什么意思?感觉你没说明白
    0 回复
  • @swimming 就是上面截图状态下的开关,点击开关获取这一行的id。通过节点的方式是找不到id的,因为没有显示id。
    0 回复
  • swimming
    2018-9-10
    @匹诺曹926 table.on('checkbox('表格的elem')', function(obj){
    console.log(obj)
    });
    你监听这个开关
    0 回复
  • @swimming 你这个是监听复选框把!
    form.on('switch(recFlag)', function(obj){

    });
    0 回复
  • @岁月小偷
    var selectIfKey=obj.othis; // 获取当前控件
    var parentTr = selectIfKey.parents("tr"); // 获取当前所在行
    然后用这行的节点 .data-index吗? 点出来是空的

    我现在暂时是给他把id查出来,然后隐藏,再去根据这个节点找eq(0)的值。
    但是每次点击进去这个页面都有那么一瞬间会看到ID小时的过程!
    0 回复
  • parentTr.data('index')
    0 回复
  • Dopamine
    2018-9-11
    @匹诺曹926 你需要给你的开关一个layEvent 然后去我写的那个监听的方法里面去取值
    0 回复
  • Dopamine
    2018-9-11
    @匹诺曹926 我有一个项目就是用开关监听的方法拿到了ID从而操作数据的
    0 回复
  • @Hanjialin 这种要写两个监听事件吧。

    var selectIfKey=obj.othis;// 获取当前控件
    var parentTr = selectIfKey.parents("tr"); // 获取当前所在行节点
    var index = parentTr.data('index') ;//获取节点中的 index 值
    var data = table.cache["tableId"][index]; //根据节点中的index查询 请求中返回的数据
    var id = data.id; //然后获取id就可以了
    0 回复
  • swimming
    2018-9-11
    @匹诺曹926 你表的开关是这样的吗?
    0 回复
  • 0 回复
  • 0 回复
  • Aity
    2018-9-14
    https://www.layui.com/demo/table/form.html 多看文档 谢谢!
    0 回复
  • @Aity
    第一,我不是前端,只是前端搞不过来临时搞一下。
    第二,你发的这个地址并没有什么卵用,你如果能用你发的地址中的东西找出id,那你就真的是大神了。
    第三,别以为我没看文档,我看的不一定比你少。
    谢谢!
    0 回复