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 相关文章推荐
setTimeout与setInterval在不同浏览器下的差异
Jan 24 Javascript
JQuery的Alert消息框插件使用介绍
Oct 09 Javascript
javascript 延迟加载技术(lazyload)简单实现
Jan 17 Javascript
JQuery学习笔录 简单的JQuery
Apr 09 Javascript
一个级联菜单代码学习及removeClass与addClass的应用
Jan 24 Javascript
javascript实现3D变换的立体圆圈实例
Aug 06 Javascript
javascript时间排序算法实现活动秒杀倒计时效果
Jan 28 Javascript
jQuery的实例及必知重要的jQuery选择器详解
May 20 Javascript
JavaScript字符串对象(string)基本用法示例
Jan 18 Javascript
jQuery弹出层插件popShow(改进版)用法示例
Jan 23 Javascript
js经验分享 JavaScript反调试技巧
Mar 10 Javascript
ES6中Set和Map数据结构,Map与其它数据结构互相转换操作实例详解
Feb 28 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面向对象全攻略 (十二) 抽象方法和抽象类
2009/09/30 PHP
php绘制一条直线的方法
2015/01/24 PHP
JS提交并解析后台返回的XML的代码
2008/11/03 Javascript
jquery实现点击弹出层效果的简单实例
2014/03/03 Javascript
jQuery控制TR显示隐藏的三种常用方法
2014/08/21 Javascript
使用jQuery监听DOM元素大小变化
2016/02/24 Javascript
基于javascript实现泡泡大冒险网页版小游戏
2016/03/23 Javascript
JS实现获取剪贴板内容的方法
2016/06/21 Javascript
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
2017/05/26 jQuery
基于vue.js中关于下拉框的值默认及绑定问题
2018/08/22 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
2018/09/07 Javascript
微信小程序实现文字无限轮播效果
2018/12/28 Javascript
Nodejs对postgresql基本操作的封装方法
2019/02/20 NodeJs
JS实现简易计算器
2020/02/14 Javascript
js实现QQ邮箱邮件拖拽删除功能
2020/08/27 Javascript
原生微信小程序开发中 redux 的使用详解
2021/02/18 Javascript
vue3.0封装轮播图组件的步骤
2021/03/04 Vue.js
[51:14]LGD vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
利用Python的Twisted框架实现webshell密码扫描器的教程
2015/04/16 Python
python3 模拟登录v2ex实例讲解
2017/07/13 Python
Python多图片合并PDF的方法
2019/01/03 Python
如何基于pythonnet调用halcon脚本
2020/01/20 Python
最新pycharm安装教程
2020/11/18 Python
HTML5 语音搜索(淘宝店语音搜素)
2013/01/03 HTML / CSS
波兰家具和室内装饰品购物网站:Vivre
2018/04/10 全球购物
在Java开发中如何选择使用哪种集合类
2016/08/09 面试题
构造方法和其他方法的区别
2016/04/26 面试题
计算机专业毕业生自荐信
2013/12/31 职场文书
《小山羊和小灰兔》教学反思
2014/02/19 职场文书
网络工程师自荐书范文
2014/04/01 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
医院病假条怎么写
2015/08/17 职场文书
2016年精神文明建设先进个人事迹材料
2016/02/29 职场文书
想要创业,那么你做好准备了吗?
2019/07/01 职场文书
MySQL 不等于的三种使用及区别
2021/06/03 MySQL
使用Djongo模块在Django中使用MongoDB数据库
2021/06/20 Python