【发布时间】:2017-08-25 21:44:14
【问题描述】:
我有一个带有调用菜单模式的按钮的页面。该模式包含另外两个调用两个子菜单的按钮 - 每个按钮一个。看笔: https://codepen.io/t411tocreate/pen/yoxJGO
它确实有效。但是目前的问题是我重新编写了一个可重复的代码来调用每个子菜单:
$('.show-submenu-1').on('click', function () {
$('.submenu-1.offcanvas').addClass('offcanvas--active');
})
$('.show-submenu-2').on('click', function () {
$('.submenu-2.offcanvas').addClass('offcanvas--active');
})
这种方法似乎很愚蠢。我需要一个重复次数较少的解决方案,比如数组的 forEach 函数:
var menus = [
'.show-submenu-1',
'.show-submenu-2'
];
menus.forEach(function(menu){
$(menu).on('click', function () {
$(`${menu}.offcanvas`).addClass('offcanvas--active');
})
});
当然,这种情况是行不通的。如何使我的代码干燥?
【问题讨论】:
-
我只是看了一眼codepen,所以我可能遗漏了一些东西,但是你不能对子菜单1和子菜单2使用相同的CSS类吗?它们的样式似乎相同,我认为这样可以避免您重复自己。也许只是一个类的子菜单?
-
您不能从数组项中删除
.show-并将其添加到执行绑定的选择器中吗?$(`.show-${menu}`).on()
标签: javascript jquery user-interface dry