一:click事件的封装

手机端的click事件不是太好用,

1.点击会有延迟,

2.会出现一个灰色区域

就想到了用touch事件代替.

touch事件有touchstart,touchmove,touchend.

在使用的时候会有这样的一种情况.

现在我想在一个元素上使用touch实现单击.

意思就是当我的手点下去,在抬起来后触发事件.

如果我绑定touchstart肯定是不行的:手还没抬起,就触发了事件.

如果绑定touchend.会有一些不友好的体验.

比如:我的手在元素上滑动,然后抬起,就会触发这个事件.

很明显有些时候我们只需要类似于单击事件.这种手滑动后不需要触发的事件.

下面这个代码就是一个移动端的click事件.

(function(){
$.fn.touchClick=function(callback){
this.each(function(){
var obj=$(this);
obj.on("touchstart",function(){
obj.data("move",false);
}).on("touchmove",function(){
obj.data("move",true);
}).on("touchend",function(event){
if(obj.data("move")){
return;
}else{
            if(typeof callback==="function"){
              callback(obj,event);
            }
}
obj.data("move",false);
});
});
};
})(jQuery);
$("#div").touchClick(function(self,event){
self.hide();
});

二:移动端touch事件的跨页传递.

现在又A,B两个页面.上面各有一个元素#a,#b.在当前页面的同样位置.

$("#a").on("touchend",function(){
window.location.href="B.html";
});
$("#b").on("touchend",function(){
alert("B");
});

点击a之后直接跳转到B.html.但是诡异的是.触发了b元素的touch事件.

解决办法.

$("#a").on("touchend",function(){
window.location.href="B.html";
return false
});

click事件有三个过程.手按下,手滑动,手抬起.

重新封装touchclick,使其可以出发这三个事件:

(function(){
var defaults={
start:function(self,event){},
move:function(self,event){},
end:function(self,event){}
}
$.fn.touchClick1=function(opts){
opts=$.extend({}, defaults,opts);
this.each(function(){
var obj=$(this);
obj.on("touchstart",function(event){
obj.data("move",false);
return opts.start(obj,event);
}).on("touchmove",function(event){
obj.data("move",true);
return opts.move(obj,event);
}).on("touchend",function(event){
if(obj.data("move")){
return;
}else{
return opts.end(obj,event);
}
obj.data("move",false);
});
});
};
})(jQuery);

上面的写法有个弊端,每次想访问当前对象的都得使用self.不太好。如果直接用this不是更好么。改写上面的代码

(function(){
var defaults={
start:function(self,event){},
move:function(self,event){},
end:function(self,event){}
}
$.fn.touchClick=function(opts){
if(typeof opts=="function"){
opts=$.extend({}, defaults,{end:opts});
}else{
opts=$.extend({}, defaults,opts);
}
this.each(function(){
var obj=$(this);
obj.on("touchstart",function(event){
obj.data("move",false);
opts.start.call(this,event);
}).on("touchmove",function(event){
obj.data("move",true);
opts.move.call(this,event);
}).on("touchend",function(event){
if(obj.data("move")){
return;
}else{
opts.end.call(this,event);
}
obj.data("move",false);
});
});
};
})(jQuery);

手机端的click的更多相关文章

  1. h5手机端下拉选择城市

    <!doctype html><html>    <head>            <meta http-equiv="Content-Type& ...

  2. js 判断pc端或手机端

    <script> (function () { var navUA = navigator.userAgent; var defIncludeStr = "iPhone|Andr ...

  3. 手机端的tab切换,响应式切换效果

    之前写过这些tab切换的效果,无论网页上还是手机端,网上也有很多的例子,这个好像是我参考网上,也不知道是哪里的了.总结了一下,就当保存下来了把. <!DOCTYPE html > < ...

  4. 手机端flex、字体设置、快速点击

    ;(function flexible (window, document) { var docEl = document.documentElement ♥1 var dpr = window.de ...

  5. h5 手机端适配问题汇总

    1.uc手机浏览器竟然没有 sessionstorage 醉了 2.opera 浏览器  能识别 a标签中href的  javascript:; 为网址  ,  55555 3.safari 的弹框如 ...

  6. XE5 Android 开发数据访问手机端[转]

    把供手机端调用的web服务完成,接下来实现手机端调用webservices获取数据 1.新建firemonkey mobile application 2.选择blank application 3. ...

  7. 手机端图片预览和缩放js

    转至:http://blog.sina.com.cn/s/blog_c342e3090102vcxu.html 1.手机端的图片选择和预览 <input type="file" ...

  8. HTML5手机端拍照上传

    1.accept="image/*" capture="camera" 自动调用手机端拍照功能 accept="image/*" captu ...

  9. 手机端网页返回顶部js代码

    <!DOCTYPE html>  <html>  <head>  <meta http-equiv="Content-Type" cont ...

随机推荐

  1. composer -vvv

    然后在使用Composer install 或者 composer update 的时候会停住不动.使用-vvv可以输出更多信息,其命令参数输出的级别是Debug.具体可以查看composer hel ...

  2. android 缓存Bitmap 使用内存缓存

    private LruCache<String, Bitmap> mMemoryCache; /** * 判断内存大小 设置位图的缓存空间 */ private void judgeMem ...

  3. Sharepoint的javascript客户端对象模型获取其他站点的list

    获取当前站点(子站点而不是站点集)下的list var clientContext = new SP.ClientContext.get_current(); var list=clientConte ...

  4. 实验三 java敏捷开发与XP

    一.实验内容 (一)敏捷开发与XP 软件开发流程的目的是为了提高软件开发.运营.维护的效率,并提高软件的质量.用户满意度.可靠性和软件的可维护性. 光有各种流程的思想是不够的,我们还要有一系列的工具来 ...

  5. js---html---body标签

    <body bgcolor="背景颜色" background="背景图片" text="文本颜色" link="连接文件颜 ...

  6. Libgdx 开发指南(1.3) 应用框架——查询、日志

    查询 Application接口提过多种方法查询运行时环境属性. 获得应用类型 有时候根据运行平台需要处理一些具体的逻辑,可以使用 Application.getType() 方法来返回应用所运行的平 ...

  7. BZOJ 1433 二分图上的博弈

    首先对网格染色,发现是而二分图. 那么即在二分图上选一个起点走过的点无法再走,最后无路可走就输了. 如果起点必在最大匹配中,先手必赢. 如果起点不一定在最大匹配中(包括不可能在),后手必赢.网上有解释 ...

  8. C#数据结构

    数据结构是相互之间存在一种或多种特定关系的数据元素的集合.在任何问题中,数据元素之间都不是孤立的,而是存在着一定的关系,这种关系称为结构(Structure).根据数据元素之间关系的不同特性,通常有 ...

  9. Nice Sequence_线段树***

    Description Let us consider the sequence a1, a2,..., an of non-negative integer numbers. Denote as c ...

  10. ireport开发报表,Java和JSP端如何集成

    Java端: @RequestMapping("/report") public String report() { return "/credit/report/rep ...