阻止事件冒泡和阻止默认行为的相反方法是什么?

3
我写了一些JavaScript代码来防止焦点滚动。在失去焦点后如何禁用它?
焦点
e.preventDefault();
e.stopPropagation();

失去焦点
e.preventDefault = false;
e.stopPropagatio = false;

1
值得尝试解除事件监听器吗?还是将方法放在布尔标志后面? - evolutionxbox
1
你不能撤销它们。只需停止调用它们即可。 - Oriol
@evolutionxbox 已经修复了 :). 谢谢! - user5804438
2个回答

4

通过取消事件的绑定进行修复。

聚焦

    $('.form-control').focus(function() {  
            $('#element').on('scroll touchmove mousewheel', function(e){
                e.preventDefault();
                e.stopPropagation();
        })
});

失去焦点
$('.form-control').focusout(function() {
        $('#element').unbind();
});

1

你无法撤消 preventDefaultstopPropagation

只需要停止调用它们,例如:

var stopScroll = true;
element.addEventListener('scroll', function() {
  if (stopScroll) {
    e.preventDefault();
    e.stopPropagation();
  }
});
// ...
stopScroll = false;

function listener() {
  e.preventDefault();
  e.stopPropagation();
}
element.addEventListener('scroll', listener);
// ...
element.removeEventListener('scroll', listener);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接