【问题标题】:How to stop hammer.js event propagation如何停止hammer.js事件传播
【发布时间】:2014-08-27 14:35:50
【问题描述】:

如何在 Hammer.js (2.0.2) 中停止事件传播?相关测试 (https://github.com/hammerjs/hammer.js/blob/master/tests/unit/test_propagation.js) 中使用的技术不适用于所有类型的事件。如果您将“点击”事件替换为“按下”事件,则测试失败。

【问题讨论】:

  • FWIW 单元测试中的技术适用于滑动事件,所以感谢@nlyk 引起我的注意! Hammer.js 伙计们,令人遗憾的是,新的闪亮版本的库比以前更难做到这一点。
  • 提示和技巧页面hammerjs.github.io/tips 描述了您需要设置选项 {domEvents: true} 才能启用 stopPropagation。到目前为止我还没有完成这项工作

标签: hammer.js


【解决方案1】:

在你的父元素中检查 event.target 是什么。如果它不是父元素并且设置为子元素,则忽略该事件。

例如: 如果(事件。目标!=父){ 返回; }

【讨论】:

  • 这只是一种解决方法,但它对我有用,谢谢。
【解决方案2】:

为了解决这个问题,我写了一个小mixin来扩展hammer.js的事件传播:

https://github.com/josdejong/propagating-hammerjs

【讨论】:

  • 你知道这样重写hammer.js的动机是什么吗?为什么事件不受 DOM 限制?
  • 如果你只有 JS 而没有 DOM,性能会更好。而且它更容易构建,而无需考虑 DOM。需要事件传播也不是一个非常常见的用例,它是一种反模式,有利于事件委托让一个父级处理所有事件。但有时它真的让你的生活更轻松。当有独立的组件时,它可能是必要的。
【解决方案3】:

在你的父 dom 绑定点击事件,并停止传播它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    • 1970-01-01
    • 2017-08-23
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多