swipeHelper.js
3.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
define(['mUtil', 'hammer'], function (mUtil) {
return {
swipe: function ($target, pageid) {
if ($target.data("swipe-init")) return;
var $silderHandle = $target.siblings(".wev-slider-handle");
var swipeWith = $silderHandle.width();
var mc = new Hammer($target[0]);
var timestamp; //时间戳
var _setTransform = function ($el, x, isNotTransferX) {
$el.css({
"-webkit-transform": "translate3d(" + x + "px, 0, 0)",
"transform": "translate3d(" + x + "px, 0, 0)"
}).attr({
"data-transformX-mapping": x
});
!isNotTransferX && $el.attr("data-transformX", x);
};
$target.data("swipe-init", true);
mc.get('pan').set({ direction: Hammer.DIRECTION_HORIZONTAL, threshold: 0 });
mc.on('panstart', function (ev) {
timestamp = new Date().valueOf();
$target.parent().removeClass("wev-transitioning");
var $others = $target.parent().siblings(".wev-table-view-cell").children("a");
if(!$others.length){
$others = $target.parent().parent().siblings("li").find(".wev-table-view-cell").children("a");
}
if (!$others.length) { // 当只有$target一条数据的时候
$others = $target;
}
_setTransform($others, 0);
});
mc.on('panmove', function (ev) {
var x = ev.deltaX;
var t_x = $target.attr("data-transformX"), m_x;
t_x = parseInt(t_x || 0);
m_x = t_x + x;
if (m_x > 0) {
m_x = 0;
} else if (m_x < -swipeWith) {
m_x = -swipeWith;
}
_setTransform($target, m_x, true);
});
mc.on('panleft', function (ev) {
$target.attr("data-swipe-direct", "left");
});
mc.on('panright', function (ev) {
$target.attr("data-swipe-direct", "right");
});
mc.on('pancancel', function () {
_setTransform($target, 0);
});
mc.on('panend', function (ev) {
var direct = $target.attr("data-swipe-direct");
var mappingX = $target.attr("data-transformX-mapping");
timestamp = (new Date()).valueOf() - timestamp;
$target.attr("data-transformX", mappingX).parent().addClass("wev-transitioning");
// direct != left right
if (!~["left", "right"].indexOf(direct)) return;
var axisX = 0;
if (direct == "left" && timestamp > 50 && Math.abs(mappingX) > $silderHandle.width() / 2) {
axisX = $silderHandle.width();
}
_setTransform($target, -axisX);
});
$silderHandle.on("click", ".btnBox", function () {
var script = $(this).attr("script");
mUtil.eval(decodeURIComponent(script), pageid);
_setTransform($target, 0);
});
}
};
});