javascript - 如果另一个类已经存在,则尝试添加一个类

标签 javascript jquery css lightbox

这是一个多层次的问题,不确定如果我全部询问它是否会成功,但我遇到的问题与 Lightbox 相关。

我试图让它工作,当我点击一个图像时,img 灯箱打开,但即使是 'disableScrolling': true,它不起作用。 body确实得到 overflow: hidden;从该灯箱选项,但页面仍在滚动。

所以,我必须想出一个 hacky 修复程序。我试过这个 js 但它不工作:

$( ".smile-thumb-container" ).click(function() {
    if($('body').hasClass('lb-disable-scrolling')) {
        $('html').addClass('lb-overflow-fix');
    } else {
        $('html').removeClass('lb-overflow-fix');
    }
});

当我点击 img 时,我基本上是想说, body 得到.lb-disable-scrolling .这是来自 Lightbox 本身,现在,当我点击 div 时,我想说持有 img检查是否<body>.lb-disable-scrolling ,它会有,因为灯箱会这样做。如果 body 有那个类,将类添加到 <html>称为 .lb-overflow-fix .当我关闭 img 时,<body>失去 .lb-disable-scrolling所以html应该删除 .lb-overflow-fix也是。

.lb-overflow-fix在我的 CSS 中是 overflow: hidden;我不确定为什么它适用于 <html>而不是 <body> .

我知道实际的网站并不理想,但我什至不能让它正常工作,所以我不得不假设我的 js 是不正确的。这是 site问题是。

最佳答案

因为你设置了这个 CSS:

html {
    overflow-x: hidden;
}

这改变了默认情况下垂直滚动的处理方式,结果是你的 <html>处理它的节点,而不是 <body>节点。

删除overflow-x: hidden;来自 <html> ,然后您的网站突然按预期运行。

无论如何隐藏水平溢出不是一个好主意,所以我建议不要尝试。

关于javascript - 如果另一个类已经存在,则尝试添加一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49083449/

相关文章:

javascript - angularjs 导入使 html 页面不起作用

javascript - 重置 select2 上的所有选项并加载另一个数据集

Javascript 模块,在可能未加载时传递 jQuery

javascript - 在嵌套的 then 和 promises ExpressJS/NodeJs 中返回错误

javascript - ng-repeat 显示 json 对象 Angular JS

jQuery UI 自动完成 - 从 txt 文件获取数据

javascript - 所见即所得文本区域编辑器的 CKEditor 替代品

javascript - 如何在 bootstrap 3 中创建响应式/粘性页脚?

html - 边缘的 CSS 背景颜色

css - Bootstrap 4 接受 offset-md-*,而不是 col-offset-md-* 命名约定错误