3 回答
TA贡献1719条经验 获得超6个赞
// 将数组内非指定下标的元素用 , 拼接
// 想起来 switch 好像是关键字不能作为函数名 改一下
var which = function(arr, index) {
return arr.filter(function(item, _index) {
return _index !== index;
}).join(',');
}
var menus = ['#menu', '#menu2', '#menu3'];
var subs = ['#menu_sub', '#menu_sub2', '#menu_sub3'];
$(menus.join(',')).hide();
// 遍历菜单数组
menus.forEach(function(menu, index) {
$(menu).mouseenter(function(){
// 拼接非当前位置的所有子菜单并收起
$(which(subs, index)).slideUp();
// 拼接非当前的所有菜单并重置样式
which(menus, index).css('color', '');
// 展开当前位置的子菜单
$(subs[index]).slideDown();
// 重置选中菜单的样式
menu.css('color', '#46a9ff');
})
});
有简洁版的,不过不知道你会用 ES5/6 之类的不:
var which = (arr, index) => arr.filter(function(item, _index) => _index !== index).join(',');
var subs = ['#menu_sub', '#menu_sub2', '#menu_sub3'];
$(menus.join(',')).hide();
['#menu', '#menu2', '#menu3'].forEach((menu, index, menus) => {
$(menu).mouseenter(() => {
$(which(subs, index)).slideUp();
which(menus, index).css('color', '');
$(subs[index]).slideDown();
menu.css('color', '#46a9ff');
})
});
添加回答
举报
