移动端 jquery 长按触发移动事件 <升级版>

长按触发移动事件,可以用于手机界面上返回导航图标 等等

将代码拷贝到本地,进行测试

在手机端测试,或者通过谷歌浏览器F12 测试


增加了对长按时间的判断,区分单击事件和长按事件


<!DOCTYPE html>
<html>

	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
		<title>测试触摸事件</title>

		<script type="text/javascript" src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script>
		<style>
			#mydiv {
				position:fixed;
				left:10px;
				top:10px;
				background-color:gray;
				width:100px;
				height:80px;
				z-index:10;
				display: block;
	
			}
		</style>
	</head>

	<body>
		<div id="mydiv">out</div>
	</body>

</html>

<script>
	/*设置一个长按的计时器,如果点击这个图层超过2秒则触发,mydiv里面的文字从out变in的动作*/  
	var timeout = undefined;
	var x=0;
	var y=0;
	var state=0;
	var lastTime=null;	
	var nowTime=null;

	var h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
	$(function () {
		/*触摸移动*/
		$("#mydiv").on("touchmove", function (event) {
			event.preventDefault();//阻止触摸时浏览器的缩放、滚动条滚动
			if(state==1){
					//start_x=0;
					//var start_x = event.originalEvent.targetTouches[0].clientX + document.body.scrollLeft - document.body.clientLeft;
		      var start_y = event.originalEvent.targetTouches[0].clientY+ document.body.scrollTop - document.body.clientTop;
				
					//x=start_x;
					y=start_y;
					//$("#mydiv").css("left",x);
					$("#mydiv").css("top",y);
					$("#mydiv").html(y);
					
					var top=$("#mydiv").css("top").substring(0,$("#mydiv").css("top").length-2);
					if(top <= 10){
							$("#mydiv").css("top",10);
							return false;
					}
					if(top >= (h-10-$("#mydiv").height())){
							$("#mydiv").css("top",h-10-$("#mydiv").height());
					}
			}
		});
		
		
		$("#mydiv").on("touchstart", function (event) {
			lastTime=new Date().getTime();
			event.preventDefault();//阻止触摸时浏览器的缩放、滚动条滚动
			clearTimeout(timeout);
			state=0;
			timeout = setTimeout(function() {
				state=1;
			}, 1000);
			
		});
		
		
		$("#mydiv").on("touchend", function (event) {
			event.preventDefault();//阻止触摸时浏览器的缩放、滚动条滚动
			clearTimeout(timeout);
			state=0;
			nowTime=new Date().getTime();
			var timeLength=nowTime-lastTime;
			if(timeLength<1000){
				$("#loadLayer").show();
				window.history.go(-1);
			}
		});
	
	
		
	});
	
</script>


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值