Files
g.hnyhua.cn/Mtxfw.shop/Scripts/jquery.cycle2.swipe.js
2026-02-07 15:48:27 +08:00

70 lines
2.9 KiB
JavaScript

/*! swipe plugin for Cycle2; version: 20121120 */
(function ($) {
"use strict";
// this script adds support for touch events. the logic is lifted from jQuery Mobile.
// if you have jQuery Mobile installed, you do NOT need this script
var supportTouch = 'ontouchend' in document;
$.event.special.swipe = $.event.special.swipe || {
scrollSupressionThreshold: 10, // More than this horizontal displacement, and we will suppress scrolling.
durationThreshold: 1000, // More time than this, and it isn't a swipe.
horizontalDistanceThreshold: 30, // Swipe horizontal displacement must be more than this.
verticalDistanceThreshold: 75, // Swipe vertical displacement must be less than this.
setup: function () {
var $this = $(this);
$this.bind('touchstart', function (event) {
var data = event.originalEvent.touches ? event.originalEvent.touches[0] : event;
var stop, start = {
time: (new Date()).getTime(),
coords: [data.pageX, data.pageY],
origin: $(event.target)
};
function moveHandler(event) {
if (!start)
return;
var data = event.originalEvent.touches ? event.originalEvent.touches[0] : event;
stop = {
time: (new Date()).getTime(),
coords: [data.pageX, data.pageY]
};
// prevent scrolling
if (Math.abs(start.coords[0] - stop.coords[0]) > $.event.special.swipe.scrollSupressionThreshold) {
event.preventDefault();
}
}
$this.bind('touchmove', moveHandler)
.one('touchend', function (event) {
$this.unbind('touchmove', moveHandler);
if (start && stop) {
if (stop.time - start.time < $.event.special.swipe.durationThreshold &&
Math.abs(start.coords[0] - stop.coords[0]) > $.event.special.swipe.horizontalDistanceThreshold &&
Math.abs(start.coords[1] - stop.coords[1]) < $.event.special.swipe.verticalDistanceThreshold) {
start.origin.trigger("swipe")
.trigger(start.coords[0] > stop.coords[0] ? "swipeleft" : "swiperight");
}
}
start = stop = undefined;
});
});
}
};
$.event.special.swipeleft = $.event.special.swipeleft || {
setup: function () {
$(this).bind('swipe', $.noop);
}
};
$.event.special.swiperight = $.event.special.swiperight || $.event.special.swipeleft;
})(jQuery);