我正在为网站的标题构建超级菜单。我正在使用jQuery的toggleClass来设置“抽屉”的活动状态。我对jQuery很陌生,还没有涉及很多更复杂的代码结构方式,所以我认为当前的实现非常乏味/冗长,我想知道是否有更好的方法可以做到这一点类切换。请注意,(至少在这一点上)我选择不选择悬停路线,而是使用点击切换。悬停菜单可以是PITA。
这是我的CodePen,其中包含所有内容,包括有问题的jQuery:http ://codepen.io/ksherman/pen/YPMXJW
这是jQuery块:
$('#admissions').click(function(){
$(this).parent().toggleClass('active');
$('.admissionsNav').toggleClass('active');
$('.degreesNav, .applyNav, .visitNav, .campusNav, .aboutNav, .searchNav').removeClass('active');
$('#degrees, #apply, #visit, #campus, #about, #search').parent().removeClass('active');
});
$('#degrees').click(function(){
$(this).parent().toggleClass('active');
$('.degreesNav').toggleClass('active');
$('.applyNav, .visitNav, .campusNav, .aboutNav, .searchNav, .admissionsNav').removeClass('active');
$('#admissions, #apply, #visit, #campus, #about, #search').parent().removeClass('active');
});
$('#apply').click(function(){
$(this).parent().toggleClass('active');
$('.applyNav').toggleClass('active');
$('.visitNav, .campusNav, .aboutNav, .searchNav, .admissionsNav, .degreesNav').removeClass('active');
$('#visit, #campus, #about, #search, #admissions, #degrees').parent().removeClass('active');
});
$('#visit').click(function(){
$(this).parent().toggleClass('active');
$('.visitNav').toggleClass('active');
$('.campusNav, .aboutNav, .searchNav, .admissionsNav, .degreesNav, .applyNav').removeClass('active');
$('#admissions, #degrees, #apply, #campus, #about, #search').parent().removeClass('active');
});
$('#campus').click(function(){
$(this).parent().toggleClass('active');
$('.campusNav').toggleClass('active');
$('.aboutNav, .searchNav, .admissionsNav, .degreesNav, .applyNav, .visitNav').removeClass('active');
$('#admissions, #degrees, #apply, #visit, #about, #search').parent().removeClass('active');
});
$('#about').click(function(){
$(this).parent().toggleClass('active');
$('.aboutNav').toggleClass('active');
$('.searchNav, .admissionsNav, .degreesNav, .applyNav, .visitNav, .campusNav').removeClass('active');
$('#admissions, #degrees, #apply, #visit, #campus, #search').parent().removeClass('active');
});
$('#search').click(function(){
$(this).parent().toggleClass('active');
$('.searchNav').toggleClass('active');
$('.admissionsNav, .degreesNav, .applyNav, .visitNav, .campusNav, .aboutNav').removeClass('active');
$('#admissions, #degrees, #apply, #visit, #campus, #about').parent().removeClass('active');
});
$('#body').click( function () {
$('.admissionsNav, .degreesNav, .applyNav, .visitNav, .campusNav, .aboutNav, .searchNav').removeClass('active');
$('#admissions, #degrees, #apply, #visit, #campus, #about, #search').parent().removeClass('active');
});
您可以将它们组合为一个功能,并为所有按钮调用它。
var menus = ['admissions', 'degrees', 'apply', 'visit', 'campus', 'about', 'search'];
function menuClick(e) {
$(this).parent().toggleClass('active');
$('.' + e.target.id + 'Nav').toggleClass('active');
var otherMenus = menus.filter(function (item) { return item !== e.target.id });
otherMenus.forEach(function (menu) {
$('.' + menu + 'Nav').removeClass('active');
$('#' + menu).parent().removeClass('active');
});
}
menus.forEach(function (menu) {
$('#' + menu).click(menuClick);
});
$('#body').click( menuClick );
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句