jQuery:用ToggleClass编写超级菜单
jQuery: Writing Mega Menu with ToggleClass
我正在为我们网站的标题构建一个超级菜单。我使用jQuery来切换Class来设置"抽屉"的活动状态。我是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');
});
将常见元素组合成一个方法:
Javascript:
$('#awesome_ul li a').click(function(){
$(this).parent().toggleClass('active');
//hide all
$('.admissionsNav, .degreesNav, .applyNav, .visitNav, .campusNav, .aboutNav, .searchNav').removeClass('active');
$('#admissions, #degrees, #apply, #visit, #campus, #about, #search').parent().removeClass('active');
//show wanted one
$('.'+$(this).attr('id')+'Nav').toggleClass('active');
});
HTML:
<div class="primary">
<div class="row collapse">
<div class="small-12 columns">
<ul id="awesome_ul">
您可以将它们组合成一个函数,并为所有按钮调用它。
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 );
请参阅此代码打开
相关文章:
- JavaScript下拉菜单-点击按钮并根据所选值重定向到url
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- angular的下拉菜单
- jQuery/Javascript.toggleClass/.classList.toggle的特殊行为
- 使用JQuery的动态上下文菜单
- 创建带有和不带有JavaScript的Bootstrap下拉菜单
- 创建下拉菜单
- 下拉菜单在菜单按钮的边缘闪闪发光
- Div根据<选择>菜单
- I'我设计了一个下拉菜单,onclick会出现,而on blur会消失
- 硒IDE下拉菜单
- 将JavaScript弹出菜单转换为警报框
- 调整屏幕大小后不显示子菜单
- 固定位置菜单时滚动,直到它击中一个相对容器的底部
- 我的下拉菜单中的链接不起作用
- Bootstrap Dropdown selection是在*all*下拉菜单上设置选择
- Jquerymobile-使用javascript创建选择菜单
- 如何将JSON转换为HTML下拉菜单
- 滚动后保持固定的菜单栏不起作用
- jQuery:用ToggleClass编写超级菜单