Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18207
  • 博文数量: 14
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 145
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-04 16:01
文章分类
文章存档

2014年(14)

我的朋友

分类: jQuery

2014-06-04 18:06:22

jQuery触屏插件:Tap,使用方法非常简单,例:
$("#domid").tap(function(){
  alert("You tapped me! -- by"+this.innerText);
});
依赖jquery 1.7+


01
$.fn.tap = function(fn){
02
    var collection = this,
03
        isTouch = "ontouchend" in document.createElement("div"),
04
        tstart = isTouch ? "touchstart" : "mousedown",
05
        tmove = isTouch ? "touchmove" : "mousemove",
06
        tend = isTouch ? "touchend" : "mouseup",
07
        tcancel = isTouch ? "touchcancel" : "mouseout";
08
    collection.each(function(){
09
        var i = {};
10
        i.target = this;
11
        $(i.target).on(tstart,function(e){
12
            var p = "touches" in e ? e.touches[0] : (isTouch ? window.event.touches[0] : window.event);
13
            i.startX = p.clientX;
14
            i.startY = p.clientY;
15
            i.endX = p.clientX;
16
            i.endY = p.clientY;
17
            i.startTime = + new Date;
18
        });
19
        $(i.target).on(tmove,function(e){
20
            var p = "touches" in e ? e.touches[0] : (isTouch ? window.event.touches[0] : window.event);
21
            i.endX = p.clientX;
22
            i.endY = p.clientY;
23
        });
24
        $(i.target).on(tend,function(e){
25
            if((+ new Date)-i.startTime<300){
26
                if(Math.abs(i.endX-i.startX)+Math.abs(i.endY-i.startY)<20){
27
                    var e = e || window.event;
28
                    e.preventDefault();
29
                    fn.call(i.target);
30
                }
31
            }
32
            i.startTime = undefined;
33
            i.startX = undefined;
34
            i.startY = undefined;
35
            i.endX = undefined;
36
            i.endY = undefined;
37
        });
38
    });
39
    return collection;
40
}
阅读(240) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~