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

Materialize CSS下拉菜单closeOnClick属性失效问题求助

问题

使用Materialize CSS框架开发网站,点击头像图标可展开下拉菜单,但点击菜单内任意子项时,菜单会自动关闭,不符合需求。尝试过以下方案均无效:

尝试过的无效方案

  1. 初始化时设置closeOnClick: false:
$(".dropdown-trigger2").dropdown({
closeOnClick : false
});
  1. 重复初始化并销毁:
$(document).ready(function(){
  
  var elems = document.querySelectorAll('.dropdown-trigger2');
  var instances = M.Dropdown.init(elems, {closeOnClick:false});
  $(".dropdown-trigger2").dropdown('destroy');
  $(".dropdown-trigger2").dropdown();
  console.log(instances);
});
  1. 尝试用e.stopPropagation()阻止事件冒泡(未给出具体实现)

我的HTML结构

<a class="dropdown-trigger2 btn-user waves-effect waves-light guided-tour-notification-disabled drop-btn" href="#!" data-target="dropdown1">
    <img alt="avatar" src="../img/avatar-placeholder.svg">
</a>

<ul id="dropdown1" class="dropdown-content">
    <li><a href="#">Your Profile</a></li>
    <li><a href="#">Settings</a></li>
    <li><a class="gdd" href="#!">text 1</a></li>
</ul>

解决方案

1. 正确初始化下拉组件,保留closeOnClick: false配置

你之前的方案2错误地在初始化后销毁并重新不带参数初始化,导致配置被覆盖。正确做法是只初始化一次,确保配置生效:

// 原生JS初始化(Materialize官方推荐写法)
document.addEventListener('DOMContentLoaded', function() {
  const dropdownElems = document.querySelectorAll('.dropdown-trigger2');
  M.Dropdown.init(dropdownElems, {
    closeOnClick: false, // 核心配置:点击子项不关闭菜单
    inDuration: 300,
    outDuration: 225
  });
});

如果用jQuery,写法如下:

$(document).ready(function(){
  $(".dropdown-trigger2").dropdown({
    closeOnClick: false
  });
});

2. 阻止子项点击事件冒泡(可选补充)

如果上述配置仍未生效,可能是子项的点击事件冒泡到父容器触发关闭,给所有下拉子项添加阻止冒泡:

document.addEventListener('DOMContentLoaded', function() {
  // 初始化下拉
  const dropdownElems = document.querySelectorAll('.dropdown-trigger2');
  M.Dropdown.init(dropdownElems, {
    closeOnClick: false
  });

  // 给下拉菜单的所有链接添加阻止冒泡
  document.querySelectorAll('#dropdown1 li a').forEach(link => {
    link.addEventListener('click', function(e) {
      e.stopPropagation();
    });
  });
});

3. 排查其他干扰因素

  • 检查是否有其他自定义点击事件绑定在下拉菜单或其子元素上,这些事件可能触发菜单关闭
  • 确保Materialize CSS和JS文件是最新版本,旧版本可能存在配置不生效的Bug

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 18:33:32