JavaScript网页游戏中多菜单复用返回主菜单按钮的最优方案
最优方案:用统一类名绑定事件
嘿,你的这个想法非常对——重复使用类似ID不仅不符合HTML规范(ID必须是唯一的),还会让代码冗余难维护。针对你的场景,用统一类名绑定事件是最简便的最优方案,比克隆按钮更直接高效,具体做法如下:
1. 修改HTML结构
把两个返回主菜单的按钮去掉重复的ID,换成统一的类名(比如toMainMenu),这样既符合规范,又能统一识别:
<div class="menu gameOverMenu" style="display: none;"> <button class="menuButton" type="button" id="playAgain"> Play again </button> <button class="menuButton toMainMenu" type="button"> Main Menu </button> </div> <div class="menu pauseMenu" style="display: none;"> <button class="menuButton" type="button" id="continue"> Continue </button> <button class="menuButton toMainMenu" type="button"> Main Menu </button> </div>
2. 简化jQuery事件绑定
现在只需要针对这个统一类名绑定点击事件即可,不用再写多个选择器:
$('.toMainMenu').on('click', function(){ switchUi("main"); });
为什么这个方案更好?
- 符合规范:避免了重复ID的问题,HTML里ID必须是全局唯一的,之前的写法其实是不符合标准的
- 简洁易维护:以后如果要修改返回主菜单按钮的样式、文本或者行为,只需要修改一处类相关的代码即可,不用同时改两个按钮
- 直观高效:相比克隆按钮的方式,这种写法更直接——毕竟这两个按钮本来就是不同菜单里的固定元素,没必要额外克隆,用类统一绑定事件足够简单
如果以后你需要动态生成多个菜单(比如新增其他场景菜单),克隆按钮的方式可以考虑,但就当前的静态菜单场景来说,统一类名的方案是最省心的选择。
内容的提问来源于stack exchange,提问作者Simon
相关产品推荐
相关产品推荐

