使用场景
右键大纲时,判断是否有下级标题,如有就展开,没有就向上折叠
视频全部鼠标右键操作,没用到左键
代码
(function () { document.addEventListener('contextmenu', function (event) { // 1. 查找当前点击的标题项 const headingItem = event.target.closest('li.b3-list-item[data-type="NodeHeading"]'); if (!headingItem) return; event.preventDefault(); event.stopPropagation(); // 辅助函数:切换当前标题的展开/折叠状态 function toggleCurrentHeading() { const toggleBtn = headingItem.querySelector('.b3-list-item__toggle:not(.fn__hidden)'); if (toggleBtn) { toggleBtn.click(); } } // 2. 检查当前标题是否有下级列表 const nextSibling = headingItem.nextElementSibling; const hasChildren = nextSibling && nextSibling.tagName === 'UL'; // 3. 检查当前标题是否有上级 const parentUL = headingItem.closest('ul'); const hasParent = parentUL && parentUL.previousElementSibling; // 4. 如果有下级列表,总是提供当前标题的展开/折叠功能 if (hasChildren) { toggleCurrentHeading(); return; // 直接返回,不执行后续操作 } // 5. 如果没有下级,执行原功能(折叠上一级标题) if (hasParent) { const parentHeading = parentUL.previousElementSibling; if (!parentHeading || !parentHeading.classList.contains('b3-list-item')) return; const parentToggleBtn = parentHeading.querySelector('.b3-list-item__toggle:not(.fn__hidden)'); if (parentToggleBtn) { parentToggleBtn.click(); } } }, true); })();
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于