2012-11-21 37 views
1

我爲我的應用程序使用jQuery手機。發起一個touchend事件 - jQuery Mobile

是否可以使用jQuery Mobile發佈手勢?如果用戶放置手指並拖動屏幕 - 即使他將手指放在屏幕上,我是否可以使用JavaScript釋放此手勢?

例如 - 是否可以在1000毫秒後釋放觸摸移動以便事件結束,如$(this).touchend();(就像我可以做的$(this).click();)?

編輯: 在另一方面,也許有人對如何限制touch/touchmove時間任何其他的想法?

回答

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; 
}​ 
+0

謝謝超級詳細的探索 - 我對jsFiddle有點新 - 我試圖用我的iPhone打開URL,但是當我嘗試挖掘這些元素時沒有發生任何事件,我是否做錯了什麼? – Yanipan

+0

確定它:) - 不是iphone上的console.log。我會改變它以提醒...謝謝! – Yanipan

+1

您可以使用控制檯http://developer.apple.com/library/ios/#documentation/AppleApplications/Reference/SafariWebContent/DebuggingSafarioniPhoneContent/DebuggingSafarioniPhoneContent.html –

5

您可以通過致電$(this).trigger(eventName) 觸發任何事件。有關此方法,請參閱jQuery docs

你的情況是:$(this).trigger('touchend');

如果你想觸摸的1000毫秒之後,將觸發一個事件,也許考慮JQM的taphold事件?您可以通過設置$.event.special.tap.tapholdThreshold來指定延遲。