jQuery实现长按按钮触发事件的方法


Posted in Javascript onFebruary 02, 2015

本文实例讲述了jQuery实现长按按钮触发事件的方法。分享给大家供大家参考。具体分析如下:

现在手机端的快速发展,使许多手机手势需要制作到手机版的网页过程中

网上有许多长按按钮的插件,甚至仅仅是jQuery Mobile都有长按事件

但是基于种种的兼容性问题,

只使用jquery去实现长按动作,可以在手机端与电脑端保持极强的兼容性

一、基本目标

制作一个按钮,实质上一个100x100px的灰色背景的图层,长按达2s则图层里的文字从in变成out。如下图所示:

jQuery实现长按按钮触发事件的方法

二、制作过程

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  

<html xmlns="http://www.w3.org/1999/xhtml">  

<head>  

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  

<title>无标题文档</title>  

<script type="text/javascript" src="js/jquery-1.11.1.js"></script>  

  

</head>  

  

<body>  

<div id="mydiv" style="width:100px; height:100px; background:#ddd;">out</div>  

</body>  

</html>  

  

<script>  

/*设置一个长按的计时器,如果点击这个图层超过2秒则触发,mydiv里面的文字从out变in的动作*/  

var timeout ;  

   

$("#mydiv").mousedown(function() {  

    timeout = setTimeout(function() {  

        $("#mydiv").text("in");  

    }, 2000);  

});  

   

$("#mydiv").mouseup(function() {  

    clearTimeout(timeout);  

    $("#mydiv").text("out");  

});  

  

$("#mydiv").mouseout(function() {  

    clearTimeout(timeout);  

    $("#mydiv").text("out");  

});  

  

</script>

实质上,长按的时间不应该过长,因为这有可能与手机系统的部分长按手势产生冲突,但也不宜过短,因为长按时间过短与点击没有任何区别,

理论上,判断长按结束,在手机端上仅设置mouseup动作就可以,

但是,在PC上仅设置mouseup会有如下的bug:

jQuery实现长按按钮触发事件的方法

在长按的时候同时涂黑图层上面的文字,再把鼠标拖出图层,则可以躲过系统mouseup的判定,当然,在手机上无法实现这一个动作,如果完全是写给手机的网页,完全可以不管这步,不过为了更好的兼容性,还是加上mouseout动作修正这个bug。

希望本文所述对大家的jQuery程序设计有所帮助。

Javascript 相关文章推荐
经典海量jQuery插件 大家可以收藏一下
Feb 07 Javascript
JQuery UI的拖拽功能实现方法小结
Mar 14 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
Dec 23 Javascript
Jquery中基本选择器用法实例详解
May 18 Javascript
介绍JavaScript中Math.abs()方法的使用
Jun 14 Javascript
Sublime Text 3常用插件及安装方法
Dec 16 Javascript
Bootstrap基本样式学习笔记之标签(5)
Dec 07 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
Feb 14 Javascript
对vue里函数的调用顺序介绍
Mar 17 Javascript
深入学习JavaScript 高阶函数
Jun 11 Javascript
JavaScript编码小技巧分享
Sep 17 Javascript
jQuery实现跟随鼠标运动图层效果的方法
Feb 02 #Javascript
JavaScript针对网页节点的增删改查用法实例
Feb 02 #Javascript
jQuery通过控制节点实现仅在前台通过get方法完成参数传递
Feb 02 #Javascript
jQuery循环动画与获取组件尺寸的方法
Feb 02 #Javascript
基于jQuery实现最基本的淡入淡出效果实例
Feb 02 #Javascript
JavaScript对数字的判断与处理实例分析
Feb 02 #Javascript
JavaScript组件焦点与页内锚点间传值的方法
Feb 02 #Javascript
You might like
PHP采用get获取url汉字出现乱码的解决方法
2014/11/13 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
2016/05/16 PHP
[对联广告] JS脚本类
2006/08/27 Javascript
JavaScript中把数字转换为字符串的程序代码
2013/06/19 Javascript
jquery弹出层类代码分享
2013/12/27 Javascript
js通过八个点 拖动改变div大小的实现方法
2014/03/05 Javascript
jquery模拟LCD 时钟的html文件源代码
2014/06/16 Javascript
js实现仿阿里巴巴城市选择框效果实例
2015/06/24 Javascript
javascript数据结构之双链表插入排序实例详解
2015/11/25 Javascript
AngularJs实现ng1.3+表单验证
2015/12/10 Javascript
Bootstrap Chart组件使用教程
2016/04/28 Javascript
浅析Bootstrip的select控件绑定数据的问题
2016/05/10 Javascript
nodejs集成sqlite使用示例
2017/06/05 NodeJs
浅谈react+es6+webpack的基础配置
2017/08/09 Javascript
微信小程序getPhoneNumber获取用户手机号
2017/09/29 Javascript
详解express使用vue-router的history踩坑
2019/06/05 Javascript
前端插件之Bootstrap Dual Listbox使用教程
2019/07/23 Javascript
TypeScript中使用getElementXXX()的示例代码
2019/09/12 Javascript
node.js express捕获全局异常的三种方法实例分析
2019/12/27 Javascript
ESLint 是如何检查 .vue 文件的
2020/11/30 Vue.js
[00:36]我的中国心——Serenity vs Fnatic
2018/08/21 DOTA
对Django外键关系的描述
2019/07/26 Python
阿里云ECS服务器部署django的方法
2019/08/29 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
Pygame的程序开始示例代码
2020/05/07 Python
基于python实现matlab filter函数过程详解
2020/06/08 Python
Python如何实现自带HTTP文件传输服务
2020/07/08 Python
TensorFlow的环境配置与安装方法
2021/02/20 Python
HTML5 Video/Audio播放本地文件示例介绍
2013/11/18 HTML / CSS
存储过程和sql语句的优缺点
2014/07/02 面试题
建筑设计师岗位职责
2013/11/18 职场文书
超市开店计划书
2014/04/26 职场文书
国际贸易毕业生自荐书
2014/06/22 职场文书
学生个人总结范文
2015/02/15 职场文书
小学生大队委竞选稿
2015/11/20 职场文书
导游词之青岛崂山
2019/12/27 职场文书