32

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

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

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

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

4

4 回答 4

34

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

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

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

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

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

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

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

尝试阅读文档以获取更多信息

编辑:

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

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

希望能帮助到你

于 2013-06-01T15:10:36.563 回答
12

使用 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文档的更多信息

于 2014-10-28T11:35:01.707 回答
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");
});

});

于 2014-08-17T09:03:33.783 回答
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();
    }
});
于 2020-01-29T01:45:53.273 回答