jQuery:使用ToggleClass编写Mega菜单

凯文·谢尔曼

我正在为网站的标题构建超级菜单。我正在使用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 );

看到这个codepen

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

jQuery ToggleClass使用索引属性

来自分类Dev

jQuery ToggleClass使用索引属性

来自分类Dev

jQuery:toggleClass不适用于下拉菜单

来自分类Dev

中心子菜单项jQuery Mega下拉菜单插件

来自分类Dev

jQuery,使用.queue()级联CSS toggleClass()

来自分类Dev

jQuery,使用.queue()级联CSS toggleClass()

来自分类Dev

在jQuery中使用toggleClass缩小div

来自分类Dev

jQuery toggleclass到多个元素使用数组

来自分类Dev

CSS Mega下拉菜单

来自分类Dev

CSS Mega下拉菜单

来自分类Dev

jQuery-使用toggleClass时的单击处理程序

来自分类Dev

如何使用jQuery Cookie插件保存toggleClass方法的状态

来自分类Dev

使用jquery .toggleClass()时切换虚线边框

来自分类Dev

如何使用jQuery Cookie插件保存toggleClass方法的状态

来自分类Dev

我如何使用jQuery UI执行AFTER toggleClass之后的功能

来自分类Dev

多级菜单:显示子菜单,使用jquery隐藏其父菜单

来自分类Dev

Bootstrap-Yamm Mega菜单-多下拉菜单

来自分类Dev

jQuery .toggleClass()过渡

来自分类Dev

jQuery toggleClass与淡入效果

来自分类Dev

jQuery .toggleClass()速度

来自分类Dev

动画的jQuery toggleclass

来自分类Dev

jQuery toggleClass冲突

来自分类Dev

jQuery每个toggleClass

来自分类Dev

使用jQuery显示/隐藏菜单

来自分类Dev

使用jQuery $ this下拉菜单

来自分类Dev

使用 jQuery 导航隐藏菜单

来自分类Dev

使用html / CSS编写用于移动设备的复杂菜单

来自分类Dev

使用html / CSS编写用于移动设备的复杂菜单

来自分类Dev

两个全屏菜单-如何显示一个菜单项和隐藏另一个菜单-使用toggleclass