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 相关文章推荐
10个很棒的jQuery代码片段
Sep 24 Javascript
javascript自定义滚动条实现代码
Apr 20 Javascript
AngularJS基础 ng-csp 指令详解
Aug 01 Javascript
基于zepto.js实现登录界面
Oct 09 Javascript
js构造函数创建对象是否加new问题
Jan 22 Javascript
vuex的简单使用教程
Feb 02 Javascript
vue项目国际化vue-i18n的安装使用教程
Mar 14 Javascript
vue.js自定义组件directives的实例代码
Nov 09 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
Jan 20 Javascript
实例讲解v-if和v-show的区别
Jan 31 Javascript
layui 点击重置按钮, select 并没有被重置的解决方法
Sep 03 Javascript
node.js 如何监视文件变化
Sep 01 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
收音机发烧友应当熟知的100条知识
2021/03/02 无线电
PHP中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述
2011/03/23 PHP
php 批量生成html,txt文件的实现代码
2013/06/26 PHP
php json_encode值中大括号与花括号区别
2013/09/30 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
Thinkphp框架中D方法与M方法的区别
2016/12/23 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
php给数组赋值的实例方法
2019/09/26 PHP
使用PHP开发留言板功能
2019/11/19 PHP
让网页根据不同IE版本显示不同的内容
2009/02/08 Javascript
IE8 下的Js错误HTML Parsing Error...
2009/08/14 Javascript
简单实现AngularJS轮播图效果
2020/04/10 Javascript
angular directive的简单使用总结
2017/05/24 Javascript
jquery Form轻松实现文件上传
2017/05/24 jQuery
实现微信小程序的wxml文件和wxss文件在webstrom的支持
2017/06/12 Javascript
vue按需加载组件webpack require.ensure的方法
2017/12/13 Javascript
javascript数组拍平方法总结
2018/01/20 Javascript
浅谈Vue组件及组件的注册方法
2018/08/24 Javascript
Jquery让form表单异步提交代码实现
2019/11/14 jQuery
Python 初始化多维数组代码
2008/09/06 Python
python3读取MySQL-Front的MYSQL密码
2017/05/03 Python
学习python的前途 python挣钱
2019/02/27 Python
深入解析神经网络从原理到实现
2019/07/26 Python
css3 border旋转时的动画应用
2016/01/22 HTML / CSS
Grid 宫格常用布局的实现
2020/01/10 HTML / CSS
阿玛尼意大利官网:Armani意大利
2018/10/30 全球购物
办公室内勤工作职责
2013/12/11 职场文书
副科竞争上岗演讲稿
2014/05/12 职场文书
针对吵架老公保证书
2015/05/08 职场文书
民事调解书范文
2015/05/20 职场文书
如何用JavaScript实现一个数组惰性求值库
2021/05/05 Javascript
Python基础知识学习之类的继承
2021/05/31 Python
解析Redis Cluster原理
2021/06/21 Redis
springboot项目以jar包运行的操作方法
2021/06/30 Java/Android
Shell脚本一键安装Nginx服务自定义Nginx版本
2022/03/20 Servers