You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery多级菜单首次点击展开子菜单 二次点击检测href跳转或关闭

你只需要替换原代码中的点击事件逻辑即可实现需求,修改后的完整代码如下:

$('nav .menu li.menu-item-has-children').each(function(){
    if($(this).hasClass('current_page_item')) {
        $(this).addClass('clicked');
    }
});

$('.menu li.menu-item-has-children').click(function(e) {
    const $currentItem = $(this);
    // 首次点击:未展开状态
    if (!$currentItem.hasClass('clicked')) {
        $currentItem.addClass('clicked');
        e.preventDefault();
        return false;
    } 
    // 二次点击:已展开状态
    else {
        const $link = $currentItem.children('a');
        // 判断是否存在有效href属性
        const hasValidHref = typeof $link.attr('href') !== undefined && $link.attr('href').trim() !== '';
        // 无有效href则关闭子菜单
        if (!hasValidHref) {
            $currentItem.removeClass('clicked');
            e.preventDefault();
            return false;
        }
        // 有有效href则不拦截,直接走默认跳转逻辑
    }
});

if ($('li.menu-item-has-children.clicked .sub-menu > li.menu-item-has-children.current-menu-ancestor.current-menu-parent').length) {
    $('li.menu-item-has-children.clicked .sub-menu > li.menu-item-has-children.current-menu-ancestor.current-menu-parent').addClass('clicked');
}

if ($('li.menu-item-has-children.current-menu-ancestor').length) {
    $('li.menu-item-has-children.current-menu-ancestor').addClass('clicked');
}

修改后逻辑完全匹配需求:

  • 带有效href属性的菜单项:首次点击展开子菜单,第二次点击直接跳转到对应URL
  • 无有效href属性的菜单项:首次点击展开子菜单,第二次点击收起子菜单,支持循环切换展开/收起状态
    原有CSS、HTML代码无需做任何调整即可正常运行。

内容的提问来源于stack exchange,提问作者DieAndere

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 07:48:00