javascript - 逃离 preventDefault 函数

标签 javascript jquery html css preventdefault

我有代码,点击<a>分区显示。它禁用我的滚动条,当用户单击禁用按钮 (img) 时,我想退出我的 preventDefault 函数,因为当我想使用滚动条时,它再次被禁用。

如您所见,我返回了默认的 css,因此网站看起来像以前一样,但是在鼠标滚轮上,我的滚动条再次被禁用。我正在寻找重置此 preventDefault 或以某种方式删除此功能,我不知道。

$('#region').click(function(e) {
    $('#regions').append("<div class=\"regionWindow\"></div><div class=\"regionCancel\"><img class=\"cancelButton\" src=\"img/cancelButton.png\" /></div>");
    $('.content').css({ "height": "100%", "background": "rgba(0,0,0,0.7)", "pointer-events": "none" });
    $('body').on({
        'mousewheel': function(e) {
            if (e.target.id == 'el') return;
            e.preventDefault();
            e.stopPropagation();
            $(this).css({ "overflow-y": "scroll", "position": "fixed", "width": "100%" });
        }
    });
    $('.cancelButton').click(function(){
        $('.content').css({"height":"","background":"","pointer-events":""});
        $('#regions').remove('div');
        $('body').css({"overflow-y":"","position":"","width":""});
});
});

最佳答案

您首先需要将您的事件处理程序定义为一个单独的(命名的)函数:

function myMouseWheelHandler(e) {
    if (e.target.id == 'el') return;
    e.preventDefault();
    e.stopPropagation();
    $(this).css({ "overflow-y": "scroll", "position": "fixed", "width": "100%" });
};

然后保留您拥有的 .on(),但现在使用您的命名函数:

$('body').on('mousewheel', myMouseWheelHandler);

然后您可以使用 .off() 将其删除:

$('body').off('mousewheel', myMouseWheelHandler);

关于javascript - 逃离 preventDefault 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36062145/

相关文章:

php - jQuery | Ajax,如何从外部 PHP 文件中接收的数据中操作数组键?

javascript - 在 highchart 中设置左右边距

php - 如何制作带有联系时间限制的联系页面

html - 如何在 Angular2 中设置兄弟组件的样式?

ajax - IE9 中的 jQuery AJAX 请求不发送 Cookie header

javascript - 如何根据另一个数组的匹配键值对返回一个数组?

javascript - 如何在jQgrid中实现搜索以便用户可以通过<,>或<=,>=进行过滤?

javascript - Hook 更改状态不会更新上下文提供程序的值?

javascript - 期望返回值等于 $promise

jquery - 使用 jquery 表单插件制作消息动画