【问题标题】:Prevent default only on parent or change the target of the prevent default仅在父级上阻止默认值或更改阻止默认值的目标
【发布时间】:2015-08-18 19:01:41
【问题描述】:

我正在监听包含 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);
        }

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

建议?

【问题讨论】:

标签: javascript html


【解决方案1】:

您可能正在寻找:

event.stopPropagation();        

阻止当前事件的进一步传播。

这应该可以阻止事件在 DOM 中冒泡。更多细节可以在这里找到 - https://developer.mozilla.org/en-US/docs/Web/API/Event/stopPropagation

好的,所以这不起作用 -

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

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

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

应该可以解决问题。

【讨论】:

  • 滚动事件没有帮助。
  • 有没有办法只在父级上阻止默认设置?
猜你喜欢
  • 2015-06-20
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
  • 2015-10-29
  • 1970-01-01
  • 2015-05-04
  • 2023-03-20
相关资源
最近更新 更多