【问题标题】:How to use Hammer to swipe如何使用锤子刷卡
【发布时间】:2013-06-01 14:56:52
【问题描述】:

我发现了一个有趣的资源:Hammer.js。我尝试用 Hammer 和 jQuery 滑动。

1) 我已经下载了代码here
2)我已将该代码放入文档中。我在要使用滑动的文档的头部放置了该代码的链接:<script src="hammer.js"></script>
3)我不知道如何使用它。我尝试在 jQuery 中做类似的事情。我的意思是我想滑动而不是点击:

$(function(){
    $(".blue").click(function() {
        $(".blue").animate({left: "0"}, 500)    
    });
}) 

http://jsfiddle.net/Narcis/rmtXC/

【问题讨论】:

    标签: javascript jquery swipe hammer.js


    【解决方案1】:

    这样的? http://jsfiddle.net/6jxbv/119/

    我正在使用Hammer(element).on("event", callback); 来获得结果。在这种情况下,我添加了 swipeleftswiperight 事件。

    脚本使用上述语法添加事件,例如:

    drag, dragstart, dragend, dragup, dragdown, dragleft, dragright
    swipe, swipeup, swipedown, swipeleft, swiperight
    

    如果你想将它与 jQuery 一起使用,他们提供了这种语法(如果你问我,这有点尴尬):

    $(elementOrSelector).hammer().on("event", function(event) {
        //callback
    });
    

    但你必须包含jquery.hammer.js 插件

    尝试阅读the docs 了解更多信息

    编辑:

    在这里,您可以看到一个使用滑动和拖动的示例。考虑到滑动是一种快速移动(用鼠标或触摸),而拖动是按下和移动(所以实现它是不正确的,但我会把动画留给你。:))

    http://jsfiddle.net/uZjCB/183/和全屏http://jsfiddle.net/uZjCB/183/embedded/result/

    希望对你有帮助

    【讨论】:

    • 我在问之前阅读了文档,但我真的很困惑,我不太了解。也许我做错了什么,但我认为你的代码不起作用。你检查了吗?
    • 如果向左滑动,方块会向左移动,如果向右滑动,它们会向右移动。您的预期行为是什么?
    • 这是预期的行为。但是我在 Safari、Chrome 和 Firefox 中测试了jsfiddle.net/rTFrB,我看不到任何滑动或任何情况下的移动。我不明白?
    • 您是在表格中还是在浏览器中用鼠标尝试?试试jsfiddle.net/Y4Bnz/embedded/result,它在 Chrome 和华硕 tf300 平板电脑上对我有用。
    • @Nrc 好吧,如果您将滑动与拖动混淆,请记住滑动是一种快速移动,看看这个小提琴:jsfiddle.net/uZjCB/2 我也会用它来编辑答案。我测试了它并且它正在工作。希望对你有帮助
    【解决方案2】:

    使用 Hammer.js 2.0,您需要使用识别器:

    var blue      = document.getElementById('blue');
    var hammer    = new Hammer.Manager(blue);
    var swipe     = new Hammer.Swipe();
    
    hammer.add(swipe);
    
    hammer.on('swipeleft', function(){
       $(blue).animate({left: "-=100"}, 500)  
    });
    
    hammer.on('swiperight', function(){
       $(blue).animate({left: "+=100"}, 500)  
    });
    

    阅读更多关于 Hammer 的信息documentation

    【讨论】:

    • 我个人觉得hammer 2.0 实现起来很复杂。例如,它会阻止默认事件。
    【解决方案3】:

    使用正确的 Hammer cdn 更新 JS fiddle,现在它可以工作了:

    $(function(){  
    var red = document.getElementById("red");
    var blue = document.getElementById("blue");
    
    //Swipe
    Hammer(red).on("swipeleft", function() {
        $(this).find(".color").animate({left: "-=100"}, 500);
        $("#event").text("swipe left");
    });
    
    Hammer(red).on("swiperight", function() {
        $(this).find(".color").animate({left: "+=100"}, 500);
        $("#event").text("swipe right");
    });
    
    // Drag
    Hammer(blue).on("dragleft", function() {
        $(this).find(".color").animate({left: "-=100"}, 500);
        $("#event").text("drag left");
    });
    
    Hammer(blue).on("dragright", function() {
        $(this).find(".color").animate({left: "+=100"}, 500);
        $("#event").text("drag right");
    });
    

    });

    【讨论】:

      【解决方案4】:

      用hammer.js v2.0.8试试这种方式

      https://jsfiddle.net/elijah123467/q6m84wgt/6/

      var body = $("#body");
      var navbar = $("#navbar");
      
      var hammertimeBodyRight = new Hammer.Manager(body[0], {
          recognizers: [
              [Hammer.Swipe, { direction: Hammer.DIRECTION_RIGHT}]
          ]
      });
      
      hammertimeBodyRight.on("swipe", function (ev) {
          var canvasSlid = navbar.hasClass("canvas-slid");
          if (!canvasSlid) {
              $(".navbar-toggle").click();
          }
      });
      
      var hammertimeBodyLeft = new Hammer.Manager(body[0], {
          recognizers: [
              [Hammer.Swipe, { direction: Hammer.DIRECTION_LEFT}]
          ]
      });
      
      hammertimeBodyLeft.on("swipe", function (ev) {
          var canvasSlid = navbar.hasClass("canvas-slid");
          if (canvasSlid) {
              $(".navbar-toggle").click();
          }
      });
      
      var hammertimeNavbarRight = new Hammer.Manager(navbar[0], {
          recognizers: [
              [Hammer.Swipe, { direction: Hammer.DIRECTION_RIGHT}]
          ]
      });
      
      hammertimeNavbarRight.on("swipe", function (ev) {
          var canvasSlid = navbar.hasClass("canvas-slid");
          if (!canvasSlid) {
              $(".navbar-toggle").click();
          }
      });
      
      var hammertimeNavbarLeft = new Hammer.Manager(navbar[0], {
          recognizers: [
              [Hammer.Swipe, { direction: Hammer.DIRECTION_LEFT}]
          ]
      });
      
      hammertimeNavbarLeft.on("swipe", function (ev) {
          var canvasSlid = navbar.hasClass("canvas-slid");
          if (canvasSlid) {
              $(".navbar-toggle").click();
          }
      });
      

      【讨论】:

        猜你喜欢
        • 2018-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多