【问题标题】:Escape from preventDefault function逃避 preventDefault 函数
【发布时间】:2016-03-17 13:35:29
【问题描述】:

我有代码,点击<a> div 显示。它禁用了我的滚动条,当用户单击禁用按钮 (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":""});
});
});

【问题讨论】:

  • 在 body 元素上切换一个类并在样式表中设置相关的 CSS 规则

标签: javascript jquery html css preventdefault


【解决方案1】:

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

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);

【讨论】:

  • 非常感谢,我不知道.off函数存在。真的谢谢你
猜你喜欢
  • 1970-01-01
  • 2011-06-05
  • 2011-03-10
  • 2018-06-14
  • 2011-06-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-12
  • 2020-02-14
相关资源
最近更新 更多