3 回答

TA貢獻(xiàn)1719條經(jīng)驗(yàn) 獲得超6個贊
// 將數(shù)組內(nèi)非指定下標(biāo)的元素用 , 拼接
// 想起來 switch 好像是關(guān)鍵字不能作為函數(shù)名 改一下
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();
// 遍歷菜單數(shù)組
menus.forEach(function(menu, index) {
$(menu).mouseenter(function(){
// 拼接非當(dāng)前位置的所有子菜單并收起
$(which(subs, index)).slideUp();
// 拼接非當(dāng)前的所有菜單并重置樣式
which(menus, index).css('color', '');
// 展開當(dāng)前位置的子菜單
$(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');
})
});
添加回答
舉報