某些触摸事件会导致多个事件,我如何限制所需的事件?

发布于 2024-11-18 00:33:04 字数 1064 浏览 2 评论 0原文

因此,如果我点击或按住它,它会按预期工作,但如果我滑动,我应该得到两个事件。滑动和滑动方向,但我也得到了点击事件。如果发生滑动或滑动方向,有没有办法删除点击事件?

实例:

HTML:

<div data-role="page" id="home"> 
    <div data-role="content">
        <div id="display-event" class="add-border">
            <p>Tap, TapHold (for 1 second), Swipe, SwipeRight or SwipeLeft</p>
        </div>
    </div>
</div>

JS:

function bindEvent(element) {
    element.bind('tap taphold swipe swiperight swipeleft', function(event, ui) {
       alert('Event: '+event.type); 
    });
}

bindEvent($('#display-event'));

相关问题:滑动事件触发 iPod touch 的点击事件

更新: - http://jsfiddle.net/hJtAQ/31/(使用Jaspers方法)

So if I tap or taphold it works as expected, but if I swipe I should get two events. The swipe and the swipedirection, but I also get a tap event as well. is there a way to remove the tap event if swipe or swipedirection occurs?

Live Example:

HTML:

<div data-role="page" id="home"> 
    <div data-role="content">
        <div id="display-event" class="add-border">
            <p>Tap, TapHold (for 1 second), Swipe, SwipeRight or SwipeLeft</p>
        </div>
    </div>
</div>

JS:

function bindEvent(element) {
    element.bind('tap taphold swipe swiperight swipeleft', function(event, ui) {
       alert('Event: '+event.type); 
    });
}

bindEvent($('#display-event'));

Related Question: Swipe event triggers tap event for ipod touch

Update:
- http://jsfiddle.net/hJtAQ/31/ (using Jaspers method)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

驱逐舰岛风号 2024-11-25 00:33:04

如果您只想验证触发的第一个事件,您可以为其余触发的事件设置超时和 preventDefault()

function bindEvent(element) {
    element.bind('tap taphold swipe swiperight swipeleft', function(event, ui) {
       if (event_ok == false) {
           event.preventDefault();
           return false;
       } else {
           event_ok = false;
           setTimeout(function () {
               event_ok = true;
           }, 500);
           alert('Event: '+event.type);
       }
    });
}

var event_ok = true;
bindEvent($('#display-event'));

If you want to only validate the first event that fires you can set a timeout and preventDefault() for the rest of the events fired:

function bindEvent(element) {
    element.bind('tap taphold swipe swiperight swipeleft', function(event, ui) {
       if (event_ok == false) {
           event.preventDefault();
           return false;
       } else {
           event_ok = false;
           setTimeout(function () {
               event_ok = true;
           }, 500);
           alert('Event: '+event.type);
       }
    });
}

var event_ok = true;
bindEvent($('#display-event'));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文