首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >停止子事件触发hammer.js中的父事件

停止子事件触发hammer.js中的父事件
EN

Stack Overflow用户
提问于 2014-12-20 22:02:09
回答 2查看 3K关注 0票数 1

当将锤子事件绑定到元素时,该事件也由其子元素触发。使用stopPropagation阻止事件冒泡似乎不起作用。

HTML:

代码语言:javascript
复制
<div id="parent">
    <div id="child"></div>
</div>

JS:

代码语言:javascript
复制
var hammertime = new Hammer(document.getElementById('parent'));

hammertime.on('tap', function(e) {
    e.srcEvent.stopPropagation();
    alert('Clicked on ' + e.target.id);
});

例如:http://jsfiddle.net/qqvyqzgh/3/,请参阅JSFiddle

这里我漏掉了什么?

EN

回答 2

Stack Overflow用户

发布于 2015-01-06 01:27:53

您可以检查事件的目标是否为父元素。

代码语言:javascript
复制
var element = document.getElementById('parent');
var hammertime = new Hammer(element);

hammertime.on('tap', function (e) {
    if(e.target === element) {
        alert('Clicked on ' + e.target.id);
    }
});

这是your updated fiddle

票数 0
EN

Stack Overflow用户

发布于 2021-11-21 17:39:38

除了@Guglie的回答,对于更一般的情况,向您想要禁用锤子事件的子元素中的所有元素添加一个类:

代码语言:javascript
复制
<div>
  Drag me
  <input class='disableHammer' type="range" placeholder="Don't drag me"></input>
</div>

和;

代码语言:javascript
复制
hammertime.on('pan', function(e) {
  if(e.target.classList.contains("disableHammer")) alert('Stop dragging him.');
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27580926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档