高手superior

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
$.fn.tap = function(fn){
    var collection = this,
        isTouch = "ontouchend" in document.createElement("div"),
        tstart = isTouch ? "touchstart" : "mousedown",
        tmove = isTouch ? "touchmove" : "mousemove",
        tend = isTouch ? "touchend" : "mouseup",
        tcancel = isTouch ? "touchcancel" : "mouseout";
    collection.each(function(){
        var i = {};
        i.target = this;
        $(i.target).on(tstart,function(e){
            var p = "touches" in e ? e.touches[0] : (isTouch ? window.event.touches[0] : window.event);
            i.startX = p.clientX;
            i.startY = p.clientY;
            i.endX = p.clientX;
            i.endY = p.clientY;
            i.startTime = + new Date;
        });
        $(i.target).on(tmove,function(e){
            var p = "touches" in e ? e.touches[0] : (isTouch ? window.event.touches[0] : window.event);
            i.endX = p.clientX;
            i.endY = p.clientY;
        });
        $(i.target).on(tend,function(e){
            if((+ new Date)-i.startTime<300){
                if(Math.abs(i.endX-i.startX)+Math.abs(i.endY-i.startY)<20){
                    var e = e || window.event;
                    e.preventDefault();
                    fn.call(i.target);
                }
            }
            i.startTime = undefined;
            i.startX = undefined;
            i.startY = undefined;
            i.endX = undefined;
            i.endY = undefined;
        });
    });
    return collection;
}

 

posted on 2015-06-15 21:36  高手superior  阅读(884)  评论(0编辑  收藏  举报