jQuery 手风琴菜单 - 默认情况下隐藏子菜单时遇到问题
jQuery accordion menu - trouble hiding submenus by default
我正在尝试创建一个jQuery手风琴风格的菜单,我几乎让它工作了,但是我已经卡了几个小时,试图弄清楚为什么子菜单在页面加载时默认显示。
我尝试使用CSS隐藏它们,由于某种原因,它们根本不会滑落。我也尝试将它们隐藏在jQuery中,并遇到了同样的问题。
我显然在某个地方出错了,但我无法弄清楚在哪里。
我已经为HTML和CSS创建了一个JSFiddle:http://jsfiddle.net/rcord/Gd7DM/7/
我的jQuery是:
$(document).ready(function () {
$('#mobnav > ul > li > a').click(function () {
$('#mobnav li').removeClass('active');
$(this).closest('li').addClass('active');
var checkElement = $(this).next();
if ((checkElement.is('ul')) && (checkElement.is(':visible'))) {
$(this).closest('li').removeClass('active');
checkElement.slideToggle('normal');
}
if ((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
$('#mobnav ul ul:visible').slideToggle('normal');
checkElement.slideToggle('normal');
}
if ($(this).closest('li').find('ul').children().length === 0) {
return true;
} else {
return false;
}
});
});
谢谢!
编辑:非常感谢回答的两个人 - 这很完美。我是堆栈溢出的新手,我不确定我应该在哪里说谢谢,因为它说不要使用评论......
您的顶部导航选择器menu = $('nav ul');
正在选择所有ul
元素,请将其更改为"#mobnav> ul
var pull = $('#pull');
menu = $('#mobnav > ul');
$(menu).on('load').hide();
menuHeight = menu.height();
$(pull).on('click', function (e) {
console.log('p')
e.preventDefault();
menu.slideToggle();
});
演示:小提琴
将
菜单选择器从nav ul
更改为#mobnav > ul
否则,您将在第一次单击时切换导航内的所有列表
$(function () {
var pull = $('#pull');
menu = $('#mobnav > ul');
$(menu).on('load').hide();
menuHeight = menu.height();
$(pull).on('click', function (e) {
e.preventDefault();
menu.slideToggle();
});
...
});
更新的小提琴
相关文章:
- 将PHP变量传递给jQuery时遇到问题
- JavaScript下拉菜单-点击按钮并根据所选值重定向到url
- 我的jQuery插件参数没有正确启动,遇到了问题
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- angular的下拉菜单
- 使用JQuery的动态上下文菜单
- 创建带有和不带有JavaScript的Bootstrap下拉菜单
- 创建下拉菜单
- 下拉菜单在菜单按钮的边缘闪闪发光
- Div根据<选择>菜单
- I'我设计了一个下拉菜单,onclick会出现,而on blur会消失
- 硒IDE下拉菜单
- 将JavaScript弹出菜单转换为警报框
- 调整屏幕大小后不显示子菜单
- 固定位置菜单时滚动,直到它击中一个相对容器的底部
- jQuery 手风琴菜单 - 默认情况下隐藏子菜单时遇到问题
- 在维护自定义jQuery菜单上的状态时遇到问题
- 遇到麻烦,使菜单滑下点击,然后使用jquery反转这个动画
- 我试着用JavaScript在HTML网页上创建一个动态菜单,但总是遇到麻烦
- 在向Select2下拉菜单中的选项添加事件点击时遇到问题