原文地址http://blog.csdn.net/pvfhv/article/details/3449803/#

源码:

(function($) {
var old = $.fn.swipe; $.fn.swipe = function(option) {
var opt = {
'left': $.noop,
'right': $.noop,
'up': $.noop,
'down': $.noop
}; if ($.type(option) == 'string') {
switch (option.toLowerCase()) {
case 'left':
if (this.data('opt').left && $.isFunction(this.data('opt').left)) {
this.data('opt').left.call(this);
}
break;
case 'right':
if (this.data('opt').right && $.isFunction(this.data('opt').right)) {
this.data('opt').right.call(this);
}
break;
case 'up':
if (this.data('opt').up && $.isFunction(this.data('opt').up)) {
this.data('opt').up.call(this);
}
break;
case 'down':
if (this.data('opt').down && $.isFunction(this.data('opt').down)) {
this.data('opt').down.call(this);
}
break;
default:
break;
} return this;
} else if ($.isPlainObject(option)) {
var clone = {}; //大小写不敏感处理
$.each(option, function(k, v) {
clone[k.toLowerCase()] = v;
}); $.extend(opt, clone); return this.each(function(index, ele) {
//敏感距离
var dis = 120;
//各元素赋值,备直接触发时用
$(ele).data('opt', $.extend({}, opt)).on('touchstart mousedown',function(e){
var ev=e.type=='touchstart'?e.originalEvent.touches[0]:e,
startX = ev.pageX,
startY = ev.pageY,
startLeft = $(this).position().left,
startTop = $(this).position().top,
start = {
left: startLeft,
top: startTop
},
disX = startX - startLeft,
disY = startY - startTop; $(document).on('touchmove.swipe.founder mousemove.swipe.founder',function(e){
var ev=e.type=='touchmove'?e.originalEvent.touches[0]:e; if (opt.left != $.noop || opt.right != $.noop) {
$(ele).css('left', ev.pageX - disX - $(ele).offsetParent().offset().left + 'px');
} if (opt.up != $.noop || opt.down != $.noop) {
$(ele).css('top', ev.pageY - disY - $(ele).offsetParent().offset().top + 'px');
} e.preventDefault();
}); $(document).on('touchend.swipe.founder mouseup.swipe.founder',function(e){
var ev=e.type=='touchend'?e.originalEvent.changedTouches[0]:e,
endX = ev.pageX,
endY = ev.pageY,
x = Math.abs(endX - startX),
y = Math.abs(endY - startY),
direction = null; //必须在指定dis大小外,消除敏感距离
direction = x >= y ? (endX < startX ? (Math.abs(endX - startX) > dis ? 'left' : null) : (Math.abs(endX - startX) > dis ? 'right' : null)) : (endY < startY ? (Math.abs(endY - startY) > dis ? 'up' : null) : (Math.abs(endY - startY) > dis ? 'down' : null)); switch (direction) {
case 'left':
if (opt.left && $.isFunction(opt.left)) {
opt.left.call(ele);
}
break;
case 'right':
if (opt.right && $.isFunction(opt.right)) {
opt.right.call(ele);
}
break;
case 'up':
if (opt.up && $.isFunction(opt.up)) {
opt.up.call(ele);
}
break;
case 'down':
if (opt.down && $.isFunction(opt.down)) {
opt.down.call(ele);
}
break;
default:
//复位
$(ele).animate({
'left': start.left + 'px',
'top': start.top + 'px'
});
break;
} $(document).off('.swipe.founder');
});
});
});
} else {
throw new Error('%E5%8F%82%E6%95%B0%E9%94%99%E8%AF%AF!');
}
}; $.fn.swipe.noConflict = function() {
$.fn.swipe = old;
return this;
};
})(jQuery);

案例:

<!DOCTYPE html>
<html> <head>
<meta charset="utf-8">
<title>手势+鼠标</title>
<style type="text/css">
#div1 {
text-align: center;
width: 100px;
height: 100px;
line-height: 100px;
background: yellow;
position: absolute;
left: 50%;
top: 50%;
}
</style>
</head> <body>
<div id="div1"></div>
<script src="../js/jquery-2.1.1.js" type="text/javascript" charset="utf-8"></script>
<script src="jquery.swipe.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
$('#div1').swipe({
left: function(){
$(this).text('向左运动');
},
right: function(){
$(this).text('向右运动');
},
up: function(){
$(this).text('向上运动');
},
down: function(){
$(this).text('向下运动');
}
});
</script>
</body> </html>

【转载】移动开发中的上下左右滑动插件jquery.swipe.js的更多相关文章

  1. 网站开发中很实用的 HTML5 & jQuery 插件

    这篇文章挑选了15款在网站开发中很实用的 HTML5 & jQuery 插件,如果你正在寻找能优化网站,使其更具创造力和视觉冲击,那么本文正是你需要的.这些优秀的 jQuery 插件能为你的网 ...

  2. 基于jQuery开发的手风琴插件 jquery.accordion.js

     1.插件代码 少说多做,基于jQuery的手风琴插件jquery.accordion.js的代码:  /* * 手风琴插件说明: * 1.treeTrunk对应树干 * 2.treeLeaf对应树叶 ...

  3. jQuery响应式幻灯片插件jquery.glide.js(支持触摸&轻量级)

    找到一款好的幻灯片插件不容易,找到一款功能全并且使用很简单的幻灯片更不容易,今天为大家分享一款全能的幻灯片插件glide.js,也是我现在在使用的一款插件. jquery.glide.js是响应和触摸 ...

  4. jquery插件jquery.LightBox.js之点击放大图片并左右点击切换图片(仿相册插件)

    该插件乃本博客作者所写,目的在于提升作者的js能力,也给一些js菜鸟在使用插件时提供一些便利,老鸟就悠然地飞过吧. 此插件旨在实现目前较为流行的点击放大图片并左右点击切换图片的效果,您可以根据自己的实 ...

  5. jQuery插件 -- 表单验证插件jquery.validate.js, jquery.metadata.js

    原文地址:http://blog.csdn.net/zzq58157383/article/details/7718352   最常使用JavaScript的场合就是表单的验证,而jQuery作为一个 ...

  6. jQuery滚动条插件 – jquery.slimscroll.js

    jquery.slimscroll.js插件是一个支持把内容放在一个盒子里面,固定一个高度,超出的则使用滚动.jquery.slimscroll.js不仅可以定义高度.宽度,还可以定义位置.滚动条大小 ...

  7. 会跳高的字体插件jquery.beattext.js

    插件描述:字体特效,会弹跳的字体插件jquery.beattext.js,兼容性如下: 使用方法 导入如下3个js文件: <script type="text/javascript&q ...

  8. jQuery图片懒加载插件jquery.lazyload.js使用实例注意事项说明

    jQuery图片懒加载插件jquery.lazyload.js使用实例注意事项说明 jquery.lazyload.js是一个用JavaScript编写的jQuery插件.它可以延迟加载长页面中的图片 ...

  9. jQuery懒加载插件jquery.lazyload.js使用说明实例

    jQuery懒加载插件jquery.lazyload.js使用说明实例很多网站都会用到‘图片懒加载’这种方式对网站进行优化,即延迟加载图片或符合某些条件才开始加载图片.懒加载原理:浏览器会自动对页面中 ...

随机推荐

  1. 史上最全面,清晰的SharedPreferences解析

    基础用法获取Sp:getput监听器原理分析获取SharedPreferences构造SharedPreferencesgetX原理分析putX原理分析创建editorputStringapplyap ...

  2. MySQL用户授权

    一.授权语法格式  grant 权限列表 on 数据库名.表名 to '用户名'@'客户端主机' [identified by '密码']; 单词: privileges [ˈprivilidʒz] ...

  3. 深入详解windows安全认证机制ntlm&Kerberos

    0x01 为什么要理解windows 安全认证机制: 加深对后续各种漏洞利用的理解深度,还是那句话,要知其然,更要知其所以然,不废话,咱们直接开始 0x02 windows认证协议主要有以下两种: 基 ...

  4. [POJ1094] Sorting It All Out

    link 题目大意 给出$m$个不等式关系,问可以从第几个开始确定所有之间的大小关系.若无解请输出是无法确定还是与已知矛盾. 试题分析 这题是真的是坑啊,尽然放在$floyd$传到闭包上面,还用二分, ...

  5. Atom实用配置插件for C++

    autocomplete-clang  自动补全 autocomplete for C/C++/ObjC using clang autocomplete-python 自动补全 Python pac ...

  6. Codeforces Round #286 (Div. 2) B 并查集

    B. Mr. Kitayuta's Colorful Graph time limit per test 1 second memory limit per test 256 megabytes in ...

  7. bzoj 4347 [POI2016]Nim z utrudnieniem DP

    4347: [POI2016]Nim z utrudnieniem Time Limit: 30 Sec  Memory Limit: 64 MBSubmit: 733  Solved: 281[Su ...

  8. hdu 2608 (数论)

    hdu2608  0 or 1 题意:给你一个数N(N < 2^31), 问从 1--N 所有数的因子和S(N),求 S(N)%2 的值. 链接:http://acm.hdu.edu.cn/sh ...

  9. 往android主项目中添加辅助项目

    一个较大的工程往往需要多个项目组成,便于更好的并行开发和管理,但最后还是要合到一起来发布.那如何往主项目里添加其他辅助项目呢? 通常的做法是将辅助项目打包成jar包,像库一样导入到主项目,但是如果我们 ...

  10. Java 8 Stream 用法

    一.Stream是什么 Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator.原始版本的 Iterator,用户只能显式地一个一个遍历元 ...