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 相关文章推荐
Javascript 跨域访问解决方案
Feb 14 Javascript
Java 正则表达式学习总结和一些小例子
Sep 13 Javascript
div失去焦点事件实现思路
Apr 22 Javascript
jquery UI Datepicker时间控件的使用方法(基础版)
Nov 07 Javascript
jquery拖拽排序简单实现方法(效果增强版)
Feb 16 Javascript
常用js,css文件统一加载方法(推荐) 并在加载之后调用回调函数
Sep 23 Javascript
vue 1.0 结合animate.css定义动画效果
Jul 11 Javascript
小程序scroll-view安卓机隐藏横向滚动条的实现详解
May 16 Javascript
一次微信小程序内地图的使用实战记录
Sep 09 Javascript
jquery获取input输入框中的值
Nov 13 jQuery
如何实现iframe父子传参通信
Feb 05 Javascript
vue项目中自定义video视频控制条的实现代码
Apr 26 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
利用discuz自带通行证整合dedecms的方法以及文件下载
2007/03/06 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
2013/08/07 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
2014/07/08 PHP
2014年10个最佳的PHP图像操作库
2014/07/14 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
2016/02/22 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
2016/12/07 PHP
PHP实现会员账号单唯一登录的方法分析
2019/03/07 PHP
jQuery Mobile页面跳转后未加载外部JS原因分析及解决
2013/03/18 Javascript
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
2016/08/26 Javascript
原生js的RSA和AES加密解密算法
2016/10/08 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
2016/11/23 Javascript
js实现tab切换效果
2017/02/16 Javascript
使用 NodeJS+Express 开发服务端的简单介绍
2017/04/07 NodeJs
mui上拉加载更多下拉刷新数据的封装过程
2017/11/03 Javascript
vue cli升级webapck4总结
2018/04/04 Javascript
微信开发之企业付款到银行卡接口开发的示例代码
2018/09/18 Javascript
微信小程序之数据绑定原理解析
2019/08/14 Javascript
vue 中url 链接左边的小图标更改问题
2019/12/30 Javascript
Python中表达式x += y和x = x+y 的区别详解
2017/06/20 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
2018/04/18 Python
Django ManyToManyField 跨越中间表查询的方法
2018/12/18 Python
python离线安装外部依赖包的实现
2020/02/13 Python
关于tf.TFRecordReader()函数的用法解析
2020/02/17 Python
python框架flask入门之环境搭建及开启调试
2020/06/07 Python
Python识别验证码的实现示例
2020/09/30 Python
Django中和时区相关的安全问题详解
2020/10/12 Python
亚马逊印度站:Amazon.in
2017/10/15 全球购物
阿姆斯特丹杜莎夫人蜡像馆官方网站:Madame Tussauds Amsterdam
2019/03/12 全球购物
铭立家具面试题
2012/12/06 面试题
本科毕业生求职自荐信
2014/02/03 职场文书
纪律教育月活动总结
2014/08/26 职场文书
预备党员转正材料
2014/12/19 职场文书
2015年安全生产目标责任书
2015/01/29 职场文书
2016小学教师读书心得体会
2016/01/13 职场文书
MySQL官方导出工具mysqlpump的使用
2021/05/21 MySQL