javascript - JQuery在功能中禁用单页滚动
问题描述
在项目中我使用 jquery.onepage.scroll 插件。但是当我打开模态窗口并滚动时,页面也会向后滚动。我在插件的源文件中找到了 2 个位置:
1)
e(document).bind('mousewheel DOMMouseScroll MozMousePixelScroll', function (t) {
t.preventDefault();
var n = t.originalEvent.wheelDelta || -t.originalEvent.detail;
if (!e('body').hasClass('disabled-onepage-scroll')) u(t, n);
});
2)
e(document).bind('mousewheel DOMMouseScroll MozMousePixelScroll', function (e) {
e.preventDefault();
var t = e.originalEvent.wheelDelta || -e.originalEvent.detail;
u(e, t);
});
如果我对此发表评论,则禁用滚动,但是如何使用另一个文件中的函数禁用它?例如,我有一个用于打开模式窗口的事件侦听器,当它打开时 -> 滚动被禁用
myModalEl.addEventListener('shown.bs.modal', function (event) {
disableOnepageScroll();
});
myModalEl.addEventListener('hidden.bs.modal', function (event) {
disableOnepageScroll();
});
解决方案
所以,我只是添加了 if 语句来验证 body 是否具有“modal-open”类名。
1)
e(document).bind('mousewheel DOMMouseScroll MozMousePixelScroll', function (e) {
e.preventDefault();
var t = e.originalEvent.wheelDelta || -e.originalEvent.detail;
if (!$(document.body).hasClass('modal-opened')) {
u(e, t);
}
});
2)
e(document).bind('mousewheel DOMMouseScroll MozMousePixelScroll', function (t) {
t.preventDefault();
var n = t.originalEvent.wheelDelta || -t.originalEvent.detail;
if (!$(document.body).hasClass('modal-open')) {
console.log('AAAAA');
if (!e('body').hasClass('disabled-onepage-scroll')) u(t, n);
}
});
推荐阅读
- python - 获取用户输入以停止 while 循环
- jquery - 导航到不同组件并返回同一组件后,Jquery 日期选择器无法以角度工作
- mysql - 选择具有 IF 条件和 IF 数据未找到的数据,然后插入最后插入的数据 + 1 的数据
- javascript - 在 8 个文本框中,至少一个应该使用 jquery 填充
- c# - 是否可以使用 LINQ 对新对象中多个对象的值求和
- java - 在 Android 上切换图像捕捉和视频捕捉的最佳方式是什么?
- google-apps-script - Google Sheets App Script - 用于查找 RichText(粗体/斜体)位置的自定义函数
- laravel - Laravel 从管理员控制器以超级管理员身份发送通知
- kubernetes - 如何从 kubernetes 集群中注销 kubernetes 节点
- javascript - 如何捕获子组件设置器抛出的错误?