Reputation: 9787
I've found an interesting resource: Hammer.js. I tried to swipe with Hammer and jQuery.
1) I've downloaded the code here
2) I've put that code in a document. I put a link to that code in the head of the document I want to use swipe: <script src="hammer.js"></script>
3) I do not know how to use it. I try to do something similar to this in jQuery. I mean I want to swipe instead of click:
$(function(){
$(".blue").click(function() {
$(".blue").animate({left: "0"}, 500)
});
})
http://jsfiddle.net/Narcis/rmtXC/
Upvotes: 32
Views: 80289
Reputation: 101
Try this way with 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();
}
});
Upvotes: 0
Reputation: 1106
With Hammer.js 2.0 you need to use a Recognizer :
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)
});
read more on Hammer documentation
Upvotes: 12
Reputation: 51
updating the JS fiddle with correct Hammer cdn so now it's working:
$(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");
});
});
Upvotes: 5
Reputation: 13726
Something like this? http://jsfiddle.net/6jxbv/119/
I'm using Hammer(element).on("event", callback);
to get the result. In this case, I added the swipeleft
and swiperight
events.
The script uses the syntax described above to add events like:
drag, dragstart, dragend, dragup, dragdown, dragleft, dragright
swipe, swipeup, swipedown, swipeleft, swiperight
If you want to use it with jQuery, they provide this syntax (which is kind of awkward if you ask me):
$(elementOrSelector).hammer().on("event", function(event) {
//callback
});
But you have to include the jquery.hammer.js
plugin
Try reading the docs for more info
EDIT:
Here, you can see an example using swipe and drag. Take into account that swipe is a fast movement (with the mouse or touch) and drag is pressing and moving (so the implementation it's not correct, but I'll leave the animate to you. :) )
http://jsfiddle.net/uZjCB/183/ and full screen http://jsfiddle.net/uZjCB/183/embedded/result/
Hope it helps
Upvotes: 34