1. 程式人生 > >移動端 jquery 長按觸發移動事件

移動端 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>