关闭打开的子菜单 - jQuery 手风琴
Closing open submenu - jQuery accordion
我有一个jQuery菜单,我希望能够关闭一个打开的菜单(以便关闭所有菜单)。它目前关闭的唯一方法是单击打开另一个菜单,我已经为此工作了很长时间,但相对无处可去。有什么方法可以在不单击其他菜单的情况下关闭打开的菜单。
这是代码:
http://jsfiddle.net/52EH8/9/
.HTML
<ul id="nav">
<li> <a href="#">Menu 1</a>
<ul>
<li><a href="#">Sub Menu 1</a>
</li>
<li><a href="#">Sub Menu 2</a>
</li>
<li><a href="#">Sub Menu 3</a>
</li>
<li><a href="#">Sub Menu 4</a>
</li>
</ul>
</li>
<li> <a href="#">Menu 2</a>
<ul>
<li><a href="#">Sub Menu 5</a>
</li>
<li><a href="#">Sub Menu 6</a>
</li>
<li><a href="#">Sub Menu 7</a>
</li>
<li><a href="#">Sub Menu 8</a>
</li>
<li><a href="#">Sub Menu 9</a>
</li>
</ul>
</li>
<li><a href="#">Menu 3 - No Submenu</a>
</li>
<li> <a href="#">Menu 4</a>
<ul>
<li><a href="#">Sub Menu 10</a>
</li>
<li><a href="#">Sub Menu 11</a>
</li>
<li><a href="#">Sub Menu 12</a>
</li>
<li><a href="#">Sub Menu 13</a>
</li>
</ul>
</li>
<li> <a href="#">Menu 5</a>
<ul>
<li><a href="#">Sub Menu 14</a>
</li>
<li><a href="#">Sub Menu 15</a>
</li>
<li><a href="#">Sub Menu 16</a>
</li>
<li><a href="#">Sub Menu 17</a>
</li>
<li><a href="#">Sub Menu 18</a>
</li>
</ul>
</li>
jQuery
function initMenu() {
$('#nav ul').hide();
$('#nav li a').click(
function () {
var checkElement = $(this).next();
if ((checkElement.is('ul')) && (checkElement.is(':visible'))) {
return false;
}
if ((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
removeActiveClassFromAll();
$(this).addClass("active");
$('#nav ul:visible').slideToggle('normal');
checkElement.slideToggle('normal');
return false;
}
});
}
function removeActiveClassFromAll() {
$('#nav li a').each(function (index) {
$(this).removeClass("active");
});
}
$(document).ready(function () {initMenu();});
非常感谢任何帮助,谢谢。
演示
function initMenu() {
$('#nav ul').hide();
$('#nav li a').click(
function () {
var checkElement = $(this).next();
if ((checkElement.is('ul')) && (checkElement.is(':visible'))) {
$('#nav ul:visible').slideToggle('normal'); //EDITED:-close the menu if clicked again
}
if ((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
removeActiveClassFromAll();
$(this).addClass("active");
$('#nav ul:visible').slideToggle('normal');
checkElement.slideToggle('normal');
return false;
}
//NEW CONDITION ADDED TO CLOSE ANY VISIBLE MENU WHEN MENU WITHOUT SUB MENU IS CLICKED
if($(this).siblings('ul').length==0 && $(this).parent().parent().attr('id')=='nav')
{
removeActiveClassFromAll();
$(this).addClass("active");
$('#nav ul:visible').slideToggle('normal');
return false;
}
});
}
function removeActiveClassFromAll() {
$('#nav li a').each(function (index) {
$(this).removeClass("active");
});
}
$(document).ready(function () {
initMenu();
});
//PART BELOW IS TO CLOSE TO MENU WHEN CLICK IS DETECTED ELSEWHERE ON DOCUMENT
$('#nav').click(function (e)
{
e.stopPropagation();
})
$(document).click(function () {
$('#nav').children('li').each(function () {
if ($(this).children('ul').css('display') == 'block') {
$(this).children('ul').slideToggle('normal')
$(this).children('a').removeClass('active')
}
})
})
尝试使用以下代码:
function initMenu() {
$('#nav ul').hide();
$('#nav li a').click(
function () {
var checkElement = $(this).next();
if ((checkElement.is('ul')) && (checkElement.is(':visible'))) {
$(this).removeClass("active");
$('#nav ul:visible').slideToggle('normal');
return false;
}
if ((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
removeActiveClassFromAll();
$(this).addClass("active");
$('#nav ul:visible').slideToggle('normal');
checkElement.slideToggle('normal');
return false;
}
});
$('#nav li a').click(function (index) {
$(this).removeClass("active");
});
}
function removeActiveClassFromAll() {
$('#nav li a').each(function (index) {
$(this).removeClass("active");
});
}
$(document).ready(function () {initMenu();});
相关文章:
- 添加<td>在选择菜单JQuery中选择选项时
- 当满足其他选择菜单值时取消隐藏选择菜单 - jQuery
- 手风琴菜单 JQuery - 如何打开特定的“id”
- 关闭打开的子菜单 - jQuery 手风琴
- 如何启用和禁用选择菜单 JQuery 移动版
- 子菜单jquery,当我点击另一个子菜单时关闭子菜单
- 无法创建下拉菜单 - jQuery
- 打开和关闭菜单jQuery
- 悬停菜单jquery上下滑动过快
- 切换菜单jQuery时更改导航栏背景颜色
- 响应式导航栏切换菜单jQuery
- 隐藏菜单(jquery,css)
- 响应式移动菜单-Jquery切换
- 简化一个活动菜单jQuery代码
- 刷新后需要一个活动的子菜单(jquery手风琴菜单)
- 下拉菜单jQuery
- Facebook's移动应用/站点水平滑动菜单:Jquery插件
- 从表列中选择“选择菜单”Jquery的文本值
- 针对移动设备菜单jQuery的onload问题
- 弹跳子菜单jquery