【发布时间】:2016-04-21 03:05:49
【问题描述】:
我正在开发侧边栏导航:当我们单击切换按钮时,侧边栏会打开,它会一直保持打开状态,直到我们再次单击切换按钮。 对于同一个侧边栏,我有一个悬停功能:在 mouseEnter 侧边栏打开和 onMouseLeave 侧边栏关闭。
我遇到的问题是关闭侧边栏 onClick。当我单击切换按钮上的关闭时,侧边栏保持打开状态,因为触发了 mouseEnter 功能。
我希望 mouseEnter 在导航栏关闭动画完成后准备就绪。
这是我的点击事件代码:
$('body').on('click', '.sidebar-toggler', function (e) {
var sidebar = $('.page-sidebar');
var sidebarMenu = $('.page-sidebar-menu');
if (body.hasClass("page-sidebar-closed")) {
body.removeClass("page-sidebar-closed");
sidebarMenu.removeClass("page-sidebar-menu-closed");
} else {
body.addClass("page-sidebar-closed");
sidebarMenu.addClass("page-sidebar-menu-closed");
if (body.hasClass("page-sidebar-fixed")) {
sidebarMenu.trigger("mouseleave");
}
}
这是悬停事件的代码:
if (body.hasClass('page-sidebar-fixed')) {
$('.page-sidebar').on('mouseenter', function () {
if (body.hasClass('page-sidebar-closed')) {
$(this).find('.page-sidebar-menu').removeClass('page-sidebar-menu-closed');
}
}).on('mouseleave', function () {
if (body.hasClass('page-sidebar-closed')) {
$(this).find('.page-sidebar-menu').addClass('page-sidebar-menu-closed');
}
});
}
【问题讨论】:
-
为什么同样需要 click 和 mouseenter 事件?当您单击切换按钮时,会出现侧边栏......所以问题是为什么您需要 mouseenter 来打开侧边栏?
-
为什么不呢?悬停只是为了在菜单上达到一个峰值,然后在 mouseLeave 上关闭它,而单击事件使菜单保持打开状态
-
我认为使用click事件和mouseLeave事件就足够了,因为我不知道mouseenter的目的是什么,但如果是你的规范,我无能为力。尝试使用
off(),正如 juallom 在他的回答中所说的那样,但是你需要off和on动态地处理事件,调试是一项艰巨的任务。
标签: javascript jquery html css sidebar