如何使用锤子滑动

时间:2013-06-01 14:56:53

标签: javascript jquery swipe hammer.js

我找到了一个有趣的资源: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/

4 个答案:

答案 0 :(得分:31)

这样的东西? 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/

希望有所帮助

答案 1 :(得分:10)

使用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

答案 2 :(得分:5)

使用正确的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");
});

});

答案 3 :(得分:0)

使用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();
    }
});