仅防止父项的默认值或更改防止默认值的目标

时间:2015-06-04 08:51:34

标签: javascript html

我正在侦听包含textarea的div上的滚动事件(让我们将其命名为scroll_div)。

在给定的场景中(场景并不重要)我在滚动时执行“e.preventDefault()”。

当e.target是textarea时,我不想阻止textarea内的滚动...只是为了防止scroll_div上的默认值。

我试过了:

 if(e.target.type !== "textarea") {
            this.preventDefault(e);//Don't scroll
        } else {
            this.stopPropagation(e);
        }

但是当我这样做时 - 身体在滚动(我不希望它发生)

建议?

1 个答案:

答案 0 :(得分:0)

您可能正在寻找:

event.stopPropagation();        
  

防止进一步传播当前事件。

这应该可以阻止事件冒泡DOM。有关这方面的更多详细信息,请访问此处 - https://developer.mozilla.org/en-US/docs/Web/API/Event/stopPropagation

好的,所以这不起作用 -

$('#foo').scroll(function(ev) {
    ev.preventDefault();
});

因为滚动事件发生在滚动上,但不是实际的滚动事件本身 这称为mousewheel或DOMMouseScroll,具体取决于您的浏览器。这样做:

$('#foo').on('mousewheel DOMMouseScroll', function(ev) {
    ev.preventDefault();
});

应该这样做。