Jquery 单击其他子菜单项时关闭子菜单
您好,我有这个代码来控制菜单,它的工作非常好,但我也希望所有其他子菜单关闭时,我点击打开一些其他子菜单。 简而言之:单击一+打开一个子菜单,单击另一+打开此子菜单并关闭第一个子菜单 多谢各位 看起来我还需要补充一些细节,但我不知道还能说些什么Jquery 单击其他子菜单项时关闭子菜单,jquery,Jquery,您好,我有这个代码来控制菜单,它的工作非常好,但我也希望所有其他子菜单关闭时,我点击打开一些其他子菜单。 简而言之:单击一+打开一个子菜单,单击另一+打开此子菜单并关闭第一个子菜单 多谢各位 看起来我还需要补充一些细节,但我不知道还能说些什么 /* Flaunt.js v1.0.0 by Todd Motto: http://www.toddmotto.com Latest version: https://github.com/toddmotto/flaunt-js Copyright 20
/*
Flaunt.js v1.0.0
by Todd Motto: http://www.toddmotto.com
Latest version: https://github.com/toddmotto/flaunt-js
Copyright 2013 Todd Motto
Licensed under the MIT license
http://www.opensource.org/licenses/mit-license.php
Flaunt JS, stylish responsive navigations with nested click to reveal.
*/
;(function($) {
// DOM ready
$(function() {
// Add some classes and Append the mobile icon nav
$('.nav').append($('<div class="nav-mobile"></div>'));
$('.nav > ul').addClass('nav-list');
$('.nav > ul > li').addClass('nav-item');
$('.nav > ul > li > ul').addClass('nav-submenu');
$('.nav > ul > li > ul > li').addClass('nav-submenu-item');
// Add a <span> to every .nav-item that has a <ul> inside. And add an sub menu icon indicator.
$('.nav-item').has('ul').prepend('<span class="nav-click"><i></i></span>');
// Click to reveal the mobile menu
$('.nav-mobile').click(function(){
$('.nav-list').toggle();
$('.nav-submenu').hide(); // This will close the submenu when i click the top ribbon (.nav-mobile) to close the mobile menu
if(!$('.nav-list').is(':visible')){ // the menu was closed because it's not visible anymore
$('.nav-item .nav-click').each(function(){ // loop through nav clicks
if($(this).hasClass('icon-close')) { // This will toggle back the + icon on mobile menu close/open
$(this).toggleClass('icon-close');
}
});
}
});
// Dynamic binding to on 'click' and Toggle the nested nav
$('.nav-list').on('click', '.nav-click', function(){
$(this).siblings('.nav-submenu').toggle();
// This will toggle the + and - when clicked
$(this).removeClass('nav-click');
$(this).toggleClass('icon-close');
$(this).toggleClass('nav-click');
});
// This will toggle the menu/submenu/- when click outside of the menu
$('.wrapper').click(function(event) {
$('html').one('click',function() {
$('.nav-list').hide();
$('.nav-submenu').hide(); // This will close the submenu when you click the top ribbon (hamburger button) to close the mobile menu
if(!$('.nav-list').is(':visible')){ // the menu was closed because it's not visible anymore
$('.nav-item .nav-click').each(function(){ // loop through nav clicks
if($(this).hasClass('icon-close')) { // This will toggle the +/- icon on mobile menu close/open
$(this).toggleClass('icon-close');
}
});
}
});
event.stopPropagation();
});
});
})(jQuery);
/*
Flaunt.jsv1.0.0
托德的座右铭:http://www.toddmotto.com
最新版本:https://github.com/toddmotto/flaunt-js
版权所有2013托德格言
根据麻省理工学院许可证获得许可
http://www.opensource.org/licenses/mit-license.php
标榜JS,时尚响应导航,嵌套点击显示。
*/
;(函数($){
//DOM就绪
$(函数(){
//添加一些类并附加移动图标导航
$('.nav')。追加($('');
$('.nav>ul').addClass('nav-list');
$('.nav>ul>li').addClass('nav-item');
$('.nav>ul>li>ul').addClass('nav-submenu');
$('.nav>ul>li>ul>li').addClass('nav-submenu-item');
//为每个内部有的.nav项添加一个图标,并添加一个子菜单图标指示器。
$('.nav项')。具有('ul')。前置('');
//单击以显示移动菜单
$('.nav mobile')。单击(函数(){
$('.nav list').toggle();
$('.nav子菜单').hide();//当我单击顶部功能区(.nav mobile)关闭移动菜单时,将关闭子菜单
如果(!$('.nav list').is(':visible'){//菜单已关闭,因为它不再可见
$('.nav item.nav click')。每个(函数(){//循环导航单击
如果($(this).hasClass('icon-close')){//这将切换回移动菜单上的+图标关闭/打开
$(this.toggleClass('icon-close');
}
});
}
});
//动态绑定到“单击”并切换嵌套导航
$('.nav list')。在('click','.nav click',function()上{
$(this).sides('.nav子菜单').toggle();
//这将在单击时切换+和-
$(this.removeClass('nav-click');
$(this.toggleClass('icon-close');
$(this.toggleClass('nav-click');
});
//当在菜单外单击时,将切换菜单/子菜单/-
$('.wrapper')。单击(函数(事件){
$('html').one('click',function(){
$('.nav list').hide();
$('.nav子菜单').hide();//当您单击顶部功能区(汉堡按钮)关闭移动菜单时,将关闭子菜单
如果(!$('.nav list').is(':visible'){//菜单已关闭,因为它不再可见
$('.nav item.nav click')。每个(函数(){//循环导航单击
如果($(this).hasClass('icon-close')){//这将切换移动菜单上的+/-图标关闭/打开
$(this.toggleClass('icon-close');
}
});
}
});
event.stopPropagation();
});
});
})(jQuery);
也许有更好的方法,但我认为我们已经按照你想要的方式工作了 从第40行开始,我将其更改为:
// Dynamic binding to on 'click' and Toggle the nested nav
$('.nav-list').on('click', '.nav-click', function(){
var currentSubmenu = $(this).siblings('.nav-submenu');
var currentNavClick = $(this);
$('.nav-submenu').not(currentSubmenu).slideUp();
$('.nav-click').not(currentNavClick).removeClass('icon-close');
$(this).siblings('.nav-submenu').toggle();
FWIW我真的会建议使用类似的东西,而不是滚动你自己的
它涵盖了所有的基础,使所有的事情,像这样,更容易…谢谢你的帮助。现在它按我希望的方式工作:)