【转载】移动开发中的上下左右滑动插件jquery.swipe.js
原文地址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的更多相关文章
- 网站开发中很实用的 HTML5 & jQuery 插件
这篇文章挑选了15款在网站开发中很实用的 HTML5 & jQuery 插件,如果你正在寻找能优化网站,使其更具创造力和视觉冲击,那么本文正是你需要的.这些优秀的 jQuery 插件能为你的网 ...
- 基于jQuery开发的手风琴插件 jquery.accordion.js
1.插件代码 少说多做,基于jQuery的手风琴插件jquery.accordion.js的代码: /* * 手风琴插件说明: * 1.treeTrunk对应树干 * 2.treeLeaf对应树叶 ...
- jQuery响应式幻灯片插件jquery.glide.js(支持触摸&轻量级)
找到一款好的幻灯片插件不容易,找到一款功能全并且使用很简单的幻灯片更不容易,今天为大家分享一款全能的幻灯片插件glide.js,也是我现在在使用的一款插件. jquery.glide.js是响应和触摸 ...
- jquery插件jquery.LightBox.js之点击放大图片并左右点击切换图片(仿相册插件)
该插件乃本博客作者所写,目的在于提升作者的js能力,也给一些js菜鸟在使用插件时提供一些便利,老鸟就悠然地飞过吧. 此插件旨在实现目前较为流行的点击放大图片并左右点击切换图片的效果,您可以根据自己的实 ...
- jQuery插件 -- 表单验证插件jquery.validate.js, jquery.metadata.js
原文地址:http://blog.csdn.net/zzq58157383/article/details/7718352 最常使用JavaScript的场合就是表单的验证,而jQuery作为一个 ...
- jQuery滚动条插件 – jquery.slimscroll.js
jquery.slimscroll.js插件是一个支持把内容放在一个盒子里面,固定一个高度,超出的则使用滚动.jquery.slimscroll.js不仅可以定义高度.宽度,还可以定义位置.滚动条大小 ...
- 会跳高的字体插件jquery.beattext.js
插件描述:字体特效,会弹跳的字体插件jquery.beattext.js,兼容性如下: 使用方法 导入如下3个js文件: <script type="text/javascript&q ...
- jQuery图片懒加载插件jquery.lazyload.js使用实例注意事项说明
jQuery图片懒加载插件jquery.lazyload.js使用实例注意事项说明 jquery.lazyload.js是一个用JavaScript编写的jQuery插件.它可以延迟加载长页面中的图片 ...
- jQuery懒加载插件jquery.lazyload.js使用说明实例
jQuery懒加载插件jquery.lazyload.js使用说明实例很多网站都会用到‘图片懒加载’这种方式对网站进行优化,即延迟加载图片或符合某些条件才开始加载图片.懒加载原理:浏览器会自动对页面中 ...
随机推荐
- c语言中,指针加1的情况.指针变量详细介绍
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址. 要搞清一个指针需要搞清指针的四方面的内容: 指针的类型, 指针所指向的 类型, 指针的值或者叫指针所指向的内存区, 还有指针本身所占 ...
- Hadoop1重新格式化HDFS
注意:原来的数据全部被清空了.产生了一个新的hdfs 1. 删除已有目录 1.1 查看hdfs-site.xml 将 dfs.name.dir和dfs.data.dir所指定的目录删除 vim hdf ...
- 洛谷 P1924 poj 1038
Description: 给你一个n * m的方格纸,有一些格子无法被覆盖,然后用2*3的格子覆盖这个方格纸,问你最多能放多少个格子 神级状压 为了弄清楚这道题翻了无数篇解题报告,最后终于搞明白了 用 ...
- 【learning】01分数规划
问题描述 首先分数规划是一类决策性问题 一般形式是: \[ \lambda=\frac{f(x)}{g(x)} \] 其中\(f(x)\)和\(g(x)\)都是连续的实值函数,然后要求\(\lambd ...
- Android之框架20160721
Android的四层架构分别为:Linux2.6内核层,核心库层,应用框架层,应用层. 其中Framework层为我们开发应用程序提供了非常多的API,我们通过调用特殊的API构造我们的APP,满足我 ...
- mybatis sql使用经验总结
1.where 后面如果有动态sql,可以添加一个1=1条件,然后在后面添加动态sql语句,里面添加AND 例如: <select id="queryBizMonitorHistory ...
- 在 Ubuntu16.04上安装anaconda+Spyder+TensorFlow(支持GPU)
TensorFlow 官方文档中文版 http://www.tensorfly.cn/tfdoc/get_started/introduction.html https://zhyack.github ...
- Linux遇到的两个问题
编译C++的和编译C语言的命令不同. 编译C++,应当先安装g++. 然后可以用#g++ filename.cpp -o filename 进行编译 编译C语言是用#gcc filename.c -o ...
- [DeeplearningAI笔记]卷积神经网络3.1-3.5目标定位/特征点检测/目标检测/滑动窗口的卷积神经网络实现/YOLO算法
4.3目标检测 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.1目标定位 对象定位localization和目标检测detection 判断图像中的对象是不是汽车--Image clas ...
- docker操作mysql
Docker操作mysql 查找docker hub上的mysql镜像 Docker search.mysql 拉取官方的镜像标签为5.6 Docker pull mysql:5.6 在本地镜像列表里 ...