如何实施移动设备的滑动手势?

我有一个AngularJS应用程序,它有箭头键导航来切换视图。

我想要使​​用滑动触摸设备来实现此导航。 我试过jGestures库,但它不适合刷卡。 我一直build议不要使用jQuery的手机 。

有没有其他的方式来实施刷卡?

编辑:它不会检测到滑动干净。 我在包括iPad在内的多种设备上进行了testing,并且需要多次滑动才能执行操作(在我的情况下为路由)。

我为我的需要做了这个function。

随意使用它。 在移动设备上效果很好。

function detectswipe(el,func) { swipe_det = new Object(); swipe_det.sX = 0; swipe_det.sY = 0; swipe_det.eX = 0; swipe_det.eY = 0; var min_x = 30; //min x swipe for horizontal swipe var max_x = 30; //max x difference for vertical swipe var min_y = 50; //min y swipe for vertical swipe var max_y = 60; //max y difference for horizontal swipe var direc = ""; ele = document.getElementById(el); ele.addEventListener('touchstart',function(e){ var t = e.touches[0]; swipe_det.sX = t.screenX; swipe_det.sY = t.screenY; },false); ele.addEventListener('touchmove',function(e){ e.preventDefault(); var t = e.touches[0]; swipe_det.eX = t.screenX; swipe_det.eY = t.screenY; },false); ele.addEventListener('touchend',function(e){ //horizontal detection if ((((swipe_det.eX - min_x > swipe_det.sX) || (swipe_det.eX + min_x < swipe_det.sX)) && ((swipe_det.eY < swipe_det.sY + max_y) && (swipe_det.sY > swipe_det.eY - max_y) && (swipe_det.eX > 0)))) { if(swipe_det.eX > swipe_det.sX) direc = "r"; else direc = "l"; } //vertical detection else if ((((swipe_det.eY - min_y > swipe_det.sY) || (swipe_det.eY + min_y < swipe_det.sY)) && ((swipe_det.eX < swipe_det.sX + max_x) && (swipe_det.sX > swipe_det.eX - max_x) && (swipe_det.eY > 0)))) { if(swipe_det.eY > swipe_det.sY) direc = "d"; else direc = "u"; } if (direc != "") { if(typeof func == 'function') func(el,direc); } direc = ""; swipe_det.sX = 0; swipe_det.sY = 0; swipe_det.eX = 0; swipe_det.eY = 0; },false); } function myfunction(el,d) { alert("you swiped on element with id '"+el+"' to "+d+" direction"); } 

要使用该function就像使用它

 detectswipe('an_element_id',myfunction); detectswipe('an_other_element_id',my_other_function); 

如果检测到滑动,则使用参数element-id和“l,r,u,d”(左,右,上,下)调用函数“myfunction”。

例如: http : //jsfiddle.net/rvuayqeo/1/

你尝试过Hammerjs吗? 它通过使用触摸的速度支持滑动手势。 http://eightmedia.github.com/hammer.js/

还有一个叫做angular-gesture的AngularJS模块,基于hammer.js: https : //github.com/wzr1337/angular-gestures

我知道无耻的插件,但你可能想考虑一个我写的jQuery插件:

https://github.com/benmajor/jQuery-Mobile-Events

它不需要jQuery Mobile,只需要jQuery。

我发现最简单的解决scheme并不需要插件是givanse对类似问题的回答

锤子时间!

我已经使用了锤子JS和它的手势。 从这里阅读详细信息: https : //hammerjs.github.io/

好东西,它是更轻量级和快速,然后jQuery手机。 你也可以在他们的网站上testing它。