移动端触控事件封装(完整版)

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery插件</title>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.min.js"></script>
<meta name="viewport" content="width=device-width,height=device-height,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">

<script>
(function($){

$.fn.moveTach=function(json)
{
var i=0;

for(i=0;i<this.length;i++)//重要
{
mobile(this[i],json);
}

function mobile(obj,json){

obj.addEventListener('touchstart',function(event)
{ //触控开始

startx = event.touches[0].pageX;
starty = event.touches[0].pageY;

},false);

obj.addEventListener('touchmove',function(event)
{
event.preventDefault();
movex = event.touches[0].pageX;
movey = event.touches[0].pageY;

obj.innerHTML='x:'+Math.abs(movex)+',y:'+Math.abs(movey);

if(json.swipe)
{
json.swipe();
}


},false);

obj.addEventListener('touchend',function(event)
{ //触控结束
endx = event.changedTouches[0].pageX;
endy = event.changedTouches[0].pageY;

var deltax = endx - startx;
var deltay = endy - starty;

if( Math.abs( deltax ) < 30 && Math.abs( deltay ) < 30 )//当滑动的距离小于30px的时候不做滑动
return;

if( Math.abs( deltax ) >= Math.abs( deltay ) )// 当滑动的X轴距离大于,Y轴的滑动距离->则是水平滑动,否则就是垂直滑动
{
if( deltax > 0 )//触控结束的X轴坐标大于触控开始的X轴坐标就是向右滑动,否则就是向左滑动
{
if(json.right) json.right();
}
else{
if(json.left) json.left();
}
}else{

if( deltay > 0 )//触控结束的Y轴坐标大于触控开始的Y轴坐标就是向下滑动,否则就是向上滑动(这里要注意移动设备上的Y轴的正坐标是向下的。)
{
if(json.down) json.down();
}else{
if(json.up) json.up();
}
}
},false);
};

}})(jQuery)


$(function(){

var oDiv=$('.zgz');

oDiv.moveTach({

up:function(){alert('你刚才向上移动了')},

down:function(){ alert('你刚才向下移动了')},

left:function(){ alert('你刚才向左移动了')},

right:function(){alert('你刚才向右移动了')},

//swipe:function(){alert('滑动了')}

})
})

 


</script>


<style>

.zgz{ width:100%; height:100px; background:#f00; margin: 10px }

 

</style>

 

</head>

<body>

<div class="zgz"></div>
<div class="zgz"></div>
<div class="zgz"></div>
<div class="zgz"></div>

 

</body>
</html>

转载于:https://www.cnblogs.com/Greenzgz/p/4741963.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值