【bug】tree组件默认选中失效

提问 已结 8 192
世事如常何其好
悬赏:20飞吻
版本:layui 2.5.4 浏览器:谷歌浏览器

[
{
"title":"江西",
"id":1,
"pid":0,
"children":[
{
"title":"南昌",
"id":2,
"pid":1,
"children":[
{
"title":"高新区",
"id":6,
"pid":2,
"children":[

],
"href":"",
"spread":true,
"checked":false,
"disabled":false
},
{
"title":"青山湖",
"id":8,
"pid":2,
"children":[

],
"href":"",
"spread":true,
"checked":false,
"disabled":false
}
],
"href":"",
"spread":true,
"checked":false,
"disabled":false
},
{
"title":"上饶",
"id":4,
"pid":1,
"children":[

],
"href":"",
"spread":true,
"checked":false,
"disabled":false
},
{
"title":"鹰潭",
"id":5,
"pid":1,
"children":[

],
"href":"",
"spread":true,
"checked":true,
"disabled":false
}
],
"href":"",
"spread":true,
"checked":true,
"disabled":false
},
{
"title":"上海",
"id":13,
"pid":0,
"children":[

],
"href":"",
"spread":true,
"checked":true,
"disabled":false
}
]
回帖
  • 贤心
    贤心 (管理员)
    5天前
    这个会处理。
    0 回复
  • 看了下tree组件的源码,逻辑很简单,就是拿到目标节点一顿狂点click。如果是父级选中,子级有多个,且某个子级选中。这一顿点击事件下来,妥妥的是个bug。
      //部分事件
    Class.prototype.events = function(){
    var that = this
    ,options = that.config
    ,checkWarp = that.elem.find('.layui-tree-checkedFirst');

    //初始选中
    layui.each(checkWarp, function(i, item){
    $(item).children('.'+ELEM_ENTRY).find('input[name="layuiTreeCheck"]+').trigger('click');
    });
    0 回复
  • 初始化选中改成如下方式,不知可否:
         //初始选中
    layui.each(checkWarp, function(i, item){
    var o = $(item).children('.'+ELEM_ENTRY);
    o.find('.layui-form-checkbox').addClass('layui-form-checked');
    o.find('input[name="layuiTreeCheck"]+').attr('checked', 'checked');
    });
    0 回复
  • 0 回复
  • 这个bug很明显才对,可是没看到反馈的issues,看来有点凉凉的感觉。
    0 回复
  • Hide
    7天前
    为什么不使用成熟的ztree插件,稍微改下,转换成layer组件模式,难道不香吗[酷]
    0 回复
  • @Hide 只想用layui一顿搞,没想到遇到这么个bug,闹心。
    0 回复
  • Hide
    7天前
    @世事如常何其好 毕竟这个框架就1、2个人在写,已经不容易,虽然很多组件缺陷比较多,但是用layui不是说用它的所有,只是引进它的设计模式/理念,表单验证、树节点、上传、富文本等,目前感觉都不是很好用,我都采用第三方成熟的组件,对于一些你想用而又不太满意的,可以自己动手修改源码或者使用第三方的方式
    0 回复