LayUI框架,tree组件,实现展开全部和折叠全部的功能

文章讲述了如何通过JavaScript模拟点击事件,操作HTML中的特定图标类(layui-icon-addition和layui-icon-subtraction),实现动态菜单树的全部展开和折叠功能,涉及AJAX获取数据和DOM操作。
摘要由CSDN通过智能技术生成

原理就是找到展开和折叠对应的图标class名称,然后使用js模拟循环点击的方式实现。

html代码

<div id="menuTree" class="demo-tree-more"></div>

js组件渲染代码

   tree.render({
       elem: '#menuTree',
       data: getData(),  //ajax获取data数据
       showCheckbox: true,  //是否显示复选
       id: 'demoId' 
   });

点击全部展开按钮事件

//menuTree换成你自己的id就行
var treeContainer = document.querySelector('#menuTree');
var expandIcons = treeContainer.querySelectorAll('.layui-icon-addition');
expandIcons.forEach(function(icon) {
    var clickEvent = new MouseEvent('click', {
    'view': window,
    'bubbles': true,
    'cancelable': true
});
icon.dispatchEvent(clickEvent);
});

点击折叠全部按钮事件

//menuTree换成你自己的id就行
var treeContainer = document.querySelector('#menuTree');
var expandIcons = treeContainer.querySelectorAll('.layui-icon-subtraction');
expandIcons.forEach(function(icon) {
    var clickEvent = new MouseEvent('click', {
    'view': window,
    'bubbles': true,
    'cancelable': true
});
icon.dispatchEvent(clickEvent);
});
根据提供的代码,可以看出这是一个使用antd-v的table tree组件。要实现全部展开和全部折叠功能,可以通过控制每一行的展开状态来实现。 首先,你可以在data中添加一个属性来表示每一行的展开状态,例如isExpanded。然后,在expandIcon方法中,根据isExpanded的值来确定展开图标的类型。 要实现全部展开功能,你可以遍历data数组,将每一行的isExpanded属性设置为true。要实现全部折叠功能,你可以将每一行的isExpanded属性设置为false。 最后,重新渲染table组件,根据每一行的isExpanded属性来确定展开图标的类型。 以下是一个示例代码,用于实现全部展开和全部折叠功能: ```javascript // 在data中添加isExpanded属性 data.forEach(item => { item.isExpanded = true; // 默认全部展开 }); // 在expandIcon方法中根据isExpanded属性确定展开图标的类型 expandIcon(props) { if (props.record.children.length > 0) { if (props.record.isExpanded) { return ( <span class="table-icon" onClick={(e) => { props.onExpand(props.record, e); }}> <a-icon type="caret-down" /> </span> ); } else { return ( <span class="table-icon" onClick={(e) => { props.onExpand(props.record, e); }}> <a-icon type="caret-right" /> </span> ); } } else { return <span style="margin-right:19px"></span>; } } // 添加全部展开和全部折叠功能 handleExpandAll() { data.forEach(item => { item.isExpanded = true; }); // 重新渲染table组件 // ... } handleCollapseAll() { data.forEach(item => { item.isExpanded = false; }); // 重新渲染table组件 // ... } ``` 通过调用handleExpandAll和handleCollapseAll方法,你可以实现全部展开和全部折叠功能。 #### 引用[.reference_title] - *1* [antd-vue的树形table组件修改展开图标](https://blog.csdn.net/qq_40567849/article/details/124443188)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值