发起一个touchend事件 - jQuery Mobile

时间:2012-11-21 13:14:54

标签: javascript jquery jquery-mobile

我正在为我的应用程序使用jQuery mobile。

是否可以使用jQuery Mobile发布手势?如果用户放置手指并拖动屏幕 - 我是否可以使用JavaScript释放此手势,即使他将手指放在屏幕上?

例如 - 是否可以在1000毫秒后释放触摸移动,以便事件结束,例如$(this).touchend();(就像我可以做$(this).click();)?

修改 另一方面,也许有人对如何限制touch / touchmove时间有任何其他想法?

2 个答案:

答案 0 :(得分:5)

您可以致电$(this).trigger(eventName)来触发任何活动 请参阅此方法的jQuery docs

您的案例将是:$(this).trigger('touchend');

如果您想要在触摸1000ms后触发事件,可以考虑来自jQM的taphold事件?您可以通过设置$.event.special.tap.tapholdThreshold来指定延迟。

答案 1 :(得分:1)

这样的事情有用吗?

JS

function bindEventTouch(element) {
    element.bind('tap taphold swipe swiperight swipeleft', function(event, ui) {
        console.log('Event: '+event.type); 

        if(event.type == 'taphold') {
            console.log('Was Event taphold?: '+event.type); 
            element.trigger('touchend');
        }
    });

    element.bind('touchend', function(event, ui) {
        console.log('Triggered touchend Event: '+event.type); 
    });
}

$('.displayEvent').each(function(){
    bindEventTouch($(this));
});​

HTML

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

CSS

.add-border {
    border-style:solid;
    border-width:1px;
    width:100%;   
    text-align:center;
}​