js实现layui搜索树数据构造

**

js实现layui搜索树数据构造

**
其中搜索框的实现需求:
1、搜索关键字为模糊搜索
2、展示关键字命中的目标节点及所有子节点和所有父节点
实现思路:还是通过递归遍历所有子节点来判断是否包含字符串,末节点若不包含则删除自身,这样上一级父节点就变成了末节点,再进行一样的判断即可,主要工作量在于对js数组和对象的删除需要有一定的理解,实现代码如下:

var labCondition = '搜索关键字';

//过滤搜索条件
function reFilter(array) {
    for (var i=0; i<array.length; i++) {
        var data = array[i];
        if (data.title.indexOf(labCondition) > -1) {
            continue;
        }
        if (data.children && data.children.length > 0) {
            reFilter(data.children);
        }
        if (!((data.children && data.children.length > 0)) && data.title.indexOf(labCondition)==-1) {
            array.splice(i, 1);
            i--;
        }
    }
}

//将源树形数据data放进去执行后就可以直接使用layui.tree渲染了
reFilter(data);
tree.render({
    elem: '#xxx',
    data: data,
    id: 'xxx',
    showLine: false,      //是否开启连线
    accordion: true,      //是否开启手风琴模式
    showCheckbox: false,  //是否显示复选框
    click:function(item){}
});

以上转发自 简书- 二枚目

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Layui没有原生提供形穿梭框的组件,但是你可以结合 Layui形菜单和穿梭框组件来实现类似的功能。 首先,你可以使用 Layui形菜单组件构建形结构。通过调用 `tree.render` 方法,你可以将数据渲染成形菜单。例如: ```javascript var treeData = [ { title: '节点1', id: 1, children: [ { title: '子节点1', id: 11 }, { title: '子节点2', id: 12 } ] }, { title: '节点2', id: 2, children: [ { title: '子节点3', id: 13 }, { title: '子节点4', id: 14 } ] } ]; layui.tree({ elem: '#treeContainer', data: treeData, click: function(node) { // 形菜单节点点击事件 console.log(node); // 输出点击的节点数据 } }); ``` 接下来,你可以使用 Layui 的穿梭框组件构建穿梭框。通过调用 `transfer.render` 方法,你可以将数据渲染成穿梭框。例如: ```javascript var transferData = [ { value: 1, title: '节点1' }, { value: 2, title: '节点2' }, { value: 3, title: '节点3' }, { value: 4, title: '节点4' } ]; layui.transfer({ elem: '#transferContainer', data: transferData, id: 'transfer', // 必须指定唯一的 ID title: ['可选项', '已选项'], // 设置穿梭框的标题 showSearch: true, // 显示搜索框 width: 'auto', // 设置宽度 height: 'auto', // 设置高度 text: { none: '无数据', // 没有数据时的提示文本 searchNone: '无匹配数据' // 搜索无匹配数据时的提示文本 } }); ``` 最后,你可以监听形菜单的点击事件,在事件处理函数中获取点击的节点数据,并将节点数据添加到穿梭框中。例如: ```javascript layui.tree({ elem: '#treeContainer', data: treeData, click: function(node) { // 形菜单节点点击事件 layui.transferAdd('transfer', [node]); // 将点击的节点添加到穿梭框中 } }); ``` 这样,你就可以实现类似于形穿梭框的效果了。记得在 HTML 中添加对应的容器元素,如 `<div id="treeContainer"></div>` 和 `<div id="transferContainer"></div>`。 希望这些信息对你有帮助!如有更多问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值