我一直在研究导航栏,并且发生了最奇怪的问题 请使用JSFiddle链接查看我的意思。
要复制错误:
JS信息
jQuery(document).ready(function($) {
// UserCP
$('.rotate').on('click', function() {
$(this).toggleClass("down");
});
$('.nav-start').on('click', function() {
$("#nav2").removeClass("hidden");
$('#nav2 li a').stop().slideToggle('100');
return false;
});
$(document).ready(function() {
$('#nav2 li a').stop().slideToggle('100');
});
$('body').on('click', function() {
$('#nav2 li a').stop().slideUp('100');
});
$("#nav2 li a").click(function(e) {
e.stopPropagation();
});
$(document).click(function(event) {
if (!$(event.target).closest('#nav2 li a').length) {
if ($('#nav2 li a').is(":visible")) {
$('html, body').on('click', function() {
$('#nav2 li a').stop().slideUp('100');
});
};
};
});
});
固定 - 更新JSFiddle!谢谢@Louys Patrice Bessette @Titus @Rick
答案 0 :(得分:0)
您在“点击我”li
上使用了两个点击事件... ...
(一个在.navstart
上,另一个在.rotate
上)
这可能不是问题,但这会使代码更难阅读。
然后,当您slideToggle()
时,如果您希望子菜单向下滑动,则必须将其隐藏。
因为,因为您删除了hidden
类(可能在加载时有用),所以子菜单是可见的
切换隐藏了它。
我简化了你的脚本。
请查看此更新的Fiddle。
$(document).ready(function() {
// Show submenu on "Click me"
$('.nav-start').on('click', function() {
$('.rotate').toggleClass("down");
$("#nav2").removeClass("hidden");
var subNav = $('#nav2 li a');
if(subNav.css("display")=="block"){
subNav.stop().slideUp('100');
}else{
subNav.stop().slideDown('100');
}
return false;
});
$("#nav2 li a").click(function(e) {
e.stopPropagation();
});
// Hide submenu on document click
$(document).click(function(event) {
if (!$(event.target).closest('#nav2 li a').length && $('#nav2 li a').is(":visible")) {
$('#nav2 li a').stop().slideUp('100');
};
});
});