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

点击移动端toggle菜单展开后自动关闭该如何解决

问题原因

你遇到的自动关闭是事件冒泡导致的:
你绑定的两类点击事件都挂载在document上:

  • 点击toggle按钮的委托事件:负责打开/关闭菜单
  • 全局document点击事件:负责点击菜单外区域时关闭菜单

当你点击toggle按钮时,先触发toggle的逻辑把菜单打开,随后点击事件冒泡到document层,触发全局关闭逻辑,就会把刚打开的菜单立刻关掉。部分场景下是因为你点击的是toggle内部的<i>图标,原全局点击的容器判定逻辑没有识别到这属于toggle内部的点击,就触发了关闭操作,同时你原代码中插入按钮的HTML写法存在多余空格,也可能导致DOM结构解析异常触发该问题。

修复方法

只需要给toggle和菜单内部的点击事件加阻止冒泡逻辑,同时修正HTML写法即可,修改后的完整代码如下:

if ($('.nav-menu').length) { 
  var $mobile_nav = $('.nav-menu').clone().prop({ class: 'mobile-nav d-lg-none' }); 
  $('body').append($mobile_nav); 
  // 修复原代码HTML标签多余空格问题,避免DOM解析异常
  $('body').prepend('<button type="button" class="mobile-nav-toggle d-lg-none"><i class="icofont-navigation-menu"></i></button>'); 
  $('body').append('<div class="mobile-nav-overly"></div>'); 

  $(document).on('click', '.mobile-nav-toggle', function(e) {
    // 新增:阻止点击事件冒泡到document层,避免触发全局关闭逻辑
    e.stopPropagation();
    $('body').toggleClass('mobile-nav-active'); 
    $('.mobile-nav-toggle i').toggleClass('icofont-navigation-menu icofont-close'); 
    $('.mobile-nav-overly').toggle(); 
  }); 

  $(document).on('click', '.mobile-nav .drop-down > a', function(e) { 
    e.preventDefault(); 
    $(this).next().slideToggle(300); 
    $(this).parent().toggleClass('active'); 
  }); 

  // 新增:阻止点击菜单内部时事件冒泡,避免点击菜单内容误关
  $(document).on('click', '.mobile-nav', function(e) {
    e.stopPropagation();
  });

  $(document).click(function(e) { 
    var container = $(".mobile-nav, .mobile-nav-toggle"); 
    if (!container.is(e.target) && container.has(e.target).length === 0) { 
      if ($('body').hasClass('mobile-nav-active')) { 
        $('body').removeClass('mobile-nav-active'); 
        $('.mobile-nav-toggle i').toggleClass('icofont-navigation-menu icofont-close'); 
        $('.mobile-nav-overly').fadeOut(); 
      } 
    } 
  }); 
} else if ($(".mobile-nav, .mobile-nav-toggle").length) { 
  $(".mobile-nav, .mobile-nav-toggle").hide(); 
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:45:03