javascript - 单击外部事件 div 以停用功能

标签 javascript jquery html

我有一个 jquery 函数,它在单击切换按钮时卡住 HTML 滚动。 Click here

当用户在容器外部单击时,我想为此功能添加额外的触摸 - 包装器解冻 HTML 的滚动功能

//Freeze page content scrolling
function freeze() {
    if ($("html").css("position") != "fixed") {
        var top = $("html").scrollTop() ? $("html").scrollTop() :
            $("body").scrollTop();
        if (window.innerWidth > $("html").width()) {
            $("html").css("overflow-y", "scroll");
        }
        $("html").css({
            "width": "100%",
            "height": "100%",
            "position": "fixed",
            "top": -top
        });
    }
}

//Unfreeze page content scrolling
function unfreeze() {
    if ($("html").css("position") == "fixed") {
        $("html").css("position", "static");
        $("html, body").scrollTop(-parseInt($("html").css("top")));
        $("html").css({
            "position": "",
            "width": "",
            "height": "",
            "top": "",
            "overflow-y": ""
        });
    }
}

var frozen = false;

$("#addFixed").click(function() {
    if (frozen) {
        unfreeze();
        frozen = false;
    } else {
        freeze();
        frozen = true;
    }
});

最佳答案

一个解决方案可以是:

$("body").click(function(e) {
    if ($(e.target).closest("#addFixed").length) {
        console.log("Clicked inside #addFixed");
        freeze();
    } else { 
        console.log("Clicked outside #addFixed");
        unfreeze();
    }
});

在没有任何 stopPropagation 调用的情况下使用一个处理程序将允许通知其他人并允许您处理卡住/解冻逻辑

关于javascript - 单击外部事件 div 以停用功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54038626/

相关文章:

javascript - 如果不是通过单击更改复选框,如何使用 jQuery 进行监听?

javascript - 如何检查 jQuery Globalize 是否已初始化?

html - 具有底部边距和嵌套 div 100% 高度问题的流体布局

javascript - Node.JS:事件发射器

javascript - "open"切换按钮 jQuery

javascript - Scrollmagic - 使用多个补间更改主体和 div 背景颜色

javascript - 使用 jQuery 在 TinyMCE 编辑器中设置值

javascript - JQuery 使用命名空间从 XML 中提取值

html - 将图像放入灵活的 Div 框内而不扭曲图像

javascript - Mapbox 标记符号颜色变化