jquery - 如果在滚动后将鼠标悬停在主侧边栏上,请保持打开状态
问题描述
在滚动时,我想打开“.main-sidebar”,当滚动停止时,它应该关闭“.main-sidebar”。但是如果鼠标在“.main-sidebar”上,那么它需要保持打开状态。
.sidebar-collapse 是 body 上的一个类,用于折叠或展开主侧边栏。
我已经有一段时间了,我想我需要另一双眼睛来发现我的错误。
// check if the menu is collapsed or not
$('body').on('mousemove', function() {
var scrollTimer;
if ($(this).hasClass("sidebar-collapse")) {
console.log('Check: Menu is collapsed');
//Scrolling opens menu
$(window).scroll(function() {
// detect scrolling and add/remove classes
var scroll = $(window).scrollTop();
if (scroll) {
$("body").addClass("sidebar-collapse");
} else {
$("body").removeClass("sidebar-collapse");
}
// set and start timer counting for 8 sec
scrollTimer = setInterval(function() {
//When time is up addClass back
$("body").addClass("sidebar-collapse");
}, 5000);
});
} else {
console.log('Check: Menu Open (missing: .sidebar-collapse)');
//Stay open if mouse is on menu
$('.main-sidebar').on('mouseenter', function() {
if (!$('body').hasClass("sidebar-collapse")) {
console.log('ON MENU');
// set and start timer counting for 5 sec
clearInterval(scrollTimer);
}
});
}
});
解决方案
如何在窗口滚动时向侧边栏添加/删除类,并且可以使用 css 处理侧边栏上的悬停:
$(window).scroll(function() {
$('.main-sidebar').addClass("hide", ($(window).scrollTop() > 100));
setTimeout(function() {
$('.main-sidebar').removeClass('hide');
}, 1000);
});
推荐阅读
- javascript - 如何更新 FullCalendar 事件
- sql - 根据字数查找字符串
- unity3d - Webgl unity build 不会播放视频
- node.js - How to return a response and then redirect in nedb?
- javascript - The result is not a number
- visual-studio-code - 无法在只读编辑器 VS Code 中编辑
- javascript - 在 for 循环中打破 Promise 链
- mysql - MySQL没有结果,因为外键是NULL
- javascript - flickr api - 使用 JSONP 获取照片
- c# - c#登录表单(从注册表单获取信息)