首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何防止Dojo滑动手势冒泡?

如何防止Dojo滑动手势冒泡?
EN

Stack Overflow用户
提问于 2012-07-01 17:51:24
回答 2查看 1.2K关注 0票数 0

我有一个看似简单的问题,但我似乎不知道自己哪里出了问题。诚然,我在Dojo方面缺乏技能,所以请原谅我的天真。

我想要完成的:我在DOM中有一个元素,我想要响应、滑动、单击事件。但是,当触发swipe.end事件时,也会触发单击事件。我试图通过调用stopPropagation并在事件上直接调用event.stop来阻止事件的冒泡(在本例中假设事件正在冒泡),但没有效果。您可以在下面看到一个代码片段,或者查看一个工作小提琴

代码语言:javascript
运行
复制
<div id='testSwipe'>Swipe Me</div>​

JS

代码语言:javascript
运行
复制
require({
}, [ 
    'dojo/dom', 
    'dojox/gesture/swipe',
    'dojo/on',
    'dojo/_base/event'
], function(dom, swipe, on, event) {
    var div = dom.byId('testSwipe');

    on(div, swipe.end, function(e) {
        console.log("### SWIPE");

        e.stopPropagation();  // Click event still fires
        event.stop(e);  // Click event STILL fires
    });

    on(div, 'click', function(e) {
        console.log("### CLICK");
    });
});

在本例中,滑动事件将导致以下输出:

代码语言:javascript
运行
复制
### SWIPE
### CLICK

有什么建议吗?​

EN

回答 2

Stack Overflow用户

发布于 2012-12-18 11:07:30

问题是两个不同的事件正在被触发:一个event (带有event.type == 'swipe')用于滑动,一个mouseEvent用于单击。这些事件没有起泡。

实现所需目标的一种方法是,如果swipe.end事件刚刚触发,则阻止单击事件。感觉有点像黑客,但很管用。见更新的JSFiddle

顺便提一句: Dojo防止冒泡的方法似乎是按照医生们使用医生们。我确实试过了,但正如我所料,它没有效果。

票数 0
EN

Stack Overflow用户

发布于 2013-10-08 07:10:15

单击元素时,单击事件始终会触发。与使用单击事件不同,您可以使用dojox/手势/拍打进行点击手势

代码语言:javascript
运行
复制
on(div, tap, function(e) {
    console.log("### CLICK");
});

更新了小提琴

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11284333

复制
相关文章

相似问题

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