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

Django开发中实现点击单个图标仅激活对应menuToggle的问题咨询

问题根源

你当前的JS代码使用document.querySelectorAll('.menupost')选中了页面内所有带.menupost类的元素统一切换激活状态,因此点击任意图标都会触发所有菜单展开。

调整步骤

1. 修改模板中的点击事件传参

将icon元素的onclick属性修改为传入当前点击的元素本身:

<div class="icon" onclick="menuToggle1(this);">
    <img src="{% static 'images/ore.svg'%}" class="svg">
</div>

2. 重写JS逻辑,仅切换对应菜单

修改menuToggle1函数,根据传入的点击元素定位到对应的唯一菜单,再做状态切换:

function menuToggle1(clickIcon){
    // 定位到当前点击图标所属的action1容器,再查找该容器下的菜单
    const currentMenu = clickIcon.closest('.action1').querySelector('.menupost');
    // 可选功能:如果需要点击时关闭其他所有已展开的菜单,取消注释下面代码即可
    // document.querySelectorAll('.menupost').forEach(menu => {
    //     if(menu !== currentMenu) menu.classList.remove('active');
    // })
    // 切换当前菜单的激活状态
    currentMenu.classList.toggle('active');
};

3. 额外优化(可选但建议)

你当前模板中给菜单元素设置了id="menupost",如果是循环渲染多个条目,会出现大量重复ID,不符合HTML规范,直接删除该ID属性即可,上述调整后的逻辑已经完全不依赖ID定位元素。

内容的提问来源于stack exchange,提问作者marc-stupid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:39:01