4

我一直在寻找一个好的 jQuery 库,它允许我将触摸事件附加到 DOM 元素,尤其是滑动/点击。

我试过hammer.js,在文档中它告诉它有滑动效果,但是当我尝试附加它时$('.element').on('swipe', function(){ //do smth });它不起作用。

我可以通过使用它的 'dragend' 事件来模拟滑动,但不好的是,有时它有效,有时无效。

为了更具体地了解我想要实现的目标 - 检查您手机上的 twitter 网站,并尝试在您的时间线/提要中向左/向右滑动一条推文,它应该会显示一些用于“回复”/“转推”/“的操作按钮最喜欢的'。

谁能给我一个代码示例或一个库,其中包含有关如何实现此目的的良好文档?

PS:我不能在这个项目上使用 jQuery mobile。

4

3 回答 3

3

我无法为您提供图书馆帮助,但我可以复制/粘贴用于使用 JQuery 进行滑动的内容。此示例仅适用于上下滑动,但很容易适应其他手势。

这是插件部分:

;(function($) { 
  $.fn.tactile = function(swipe) {
    return this.each(function() {
      var $this = $(document),
      isTouching = false,
      debut;                                // means start in french

      $this.on('touchstart', debutGeste);       

      function debutGeste() {               // means start of gesture
        if (event.touches.length == 1) {
          debut = event.touches[0].pageY;
          isTouching = true;
          $this.on('touchmove', geste);
        }
      }

      function finGeste() {                 // means end of gesture
        $this.off('touchmove');
        isTouching = false;
        debut = null;
      } 

      function geste() {                   // geste means gesture
        if(isTouching) {
          var actuel = event.touches[0].pageY,
          delta = debut - actuel;

          if (Math.abs(delta) >= 30) {     // this '30' is the length of the swipe
            if (delta > 0) {
              swipe.up();
            } else {
              swipe.down();
            }                       
            finGeste();
          }
        }
        event.preventDefault(); 
      }
    });
  };
})(jQuery);

这是使用部分:

$(document).tactile({   
  up: function() { }, 
  down: function() { }
});

我不能保证这是正确的方法,这也不是好的代码,但它确实有效。

于 2012-09-14T16:37:36.923 回答
0

你不能使用 jQuery 手机?可以使用煎茶触摸吗?http://dev.sencha.com/deploy/touch/examples/production/kitchensink/#demo/touchevents

于 2012-09-14T16:34:34.700 回答
0

如果您使用的是 Hammer.js 的 jQuery 版本,那不应该是:

$('.element').hammer().on('swipe', function(){ //do smth });

我认为您需要 Hammer 对象来处理 jQuery 特定事件。根据我的阅读,Hammer 不会将它们作为普通的自定义 jQuery 事件注入。

于 2013-08-18T21:49:56.073 回答