我现在有一个函数,用来使页面左右滑动。但是现在出现一个问题,滑动的场景有两个,一级菜单和二级菜单。现在如果用在一起的话,一级菜单滑动完以后数值会保存,当点入二级菜单以后使用之前的状态。如何可以将这个事件给拷贝或者各自不影响呢?
$(el).on("touchstart", function(e) {
var targetTouches = e.originalEvent.targetTouches;
old_x = parseInt(targetTouches[0].pageX);
_click = 1;
var num = $(this).find("li").length;
switch (true) {
case num<=4:
huadong = 1;
break;
case num > 4&&num <= 8:
huadong = 2;
break;
default:
huadong = 3;
break;
}
}).on("touchend", function(e) {
_click = 0;
if(move == -1){
if(jishu < huadong){
jishu++;
baifen-=parseFloat(100/huadong);
$(this).css({
"transform": "translateX("+baifen+"%)",
"transition": "all .5s"
})
}
}else if (move == 1){
if (jishu > 1) {
jishu--;
baifen += parseFloat(100/huadong);
$(this).css({
"transform": "translateX("+baifen+"%)",
"transition": "all .5s"
})
}
}
}).on("touchmove", function(e) {
var targetTouches = e.originalEvent.targetTouches;
new_x = parseInt(targetTouches[0].pageX);
if (_click == 1) {
if (new_x - old_x < 50) { //向前
move = -1;
} else if (new_x - old_x > 50) {
move = 1;
} else {
move = 0;
}
}
})
相同的动作,不同的状态……采用 OOP 解决是非常合适的,直接上代码(没调试,仅示意)