jQuery防止click双击多次提交及传递动态函数或多参数


Posted in Javascript onApril 02, 2014

今天是写的是关于JQ的双击事件防止多次提交的问题,并且通过函数可以批量定义,通能性更强了,通过方法动态绑定元素的事件。而且可以动态传递函数名或者多参数等(本实例只传递函数名通过Eval调用)。

我们都知道在jQuery的事件绑定中,执行双击事件(dblclick)时能触发两次单击事件(click)。即一个标签元素(如div等),如果元素同时绑定了单击事件(click)和双击事件(dblclick),那么执行单击事件(click)时,不会触发双击事件(dblclick), 执行双击事件(dblclick)时却会触发两次单击事件(click)。

先看一下点击事件的执行顺序:

单击(click):mousedown,mouseout,click;
双击(dblclick):mousedown,mouseout,click , mousedown,mouseout,click,dblclick;

在双击事件(dblclick),触发的两次单击事件(click)中,第一次的单击事件(click)会被屏蔽掉,但第二次不会。也就是说双击事件(dblclick)会返回一次单击事件(click)结果和一次双击事件(dblclick) 结果。而不是一次双击事件(dblclick)结果和两次单击事件结果(click)。

如此这般的话,只需消灭掉多余的一次单击事件(click),这个问题就解决了。

效果如下图:
http://images.cnitblog.com/i/554071/201404/010846579687197.png
源代码如下:

<!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=gb2312" /> 
<title>jQuery防止click双击多次执行及传递动态函数方法</title> 
<script type="text/javascript" src="http://www.86y.org/js/jquery.min.js"></script> 
</head> <body> 
<div id="show">显示测试结果:</div> 
<div style="background:#f60;color:#fff;width:80px;padding:10px 20px;" id="div" onclick="ss1('DIV事件')">点击我吧</div> 
<input type="button" value="按钮一" id="but1" onclick="ss2('INPUT事件')"/> 
<script language="javascript"> 
function std (obj,vs){ 
var TimeFn = null; 
var funs=$(obj).attr("onclick"); 
$(obj).click(function() { 
clearTimeout(TimeFn); 
TimeFn = setTimeout(function(){ 
eval(funs); 
clearTimeout(TimeFn); 
}, 400); 
}); 
$(obj).dblclick(function() { 
clearTimeout(TimeFn); 
}); 
$(obj).removeAttr("onclick"); 
} 
var ss1=function(s){$("#show").html("DIV显示测试结果:"+s);alert("a");};//div调用的方法 
var ss2=function(s){$("#show").html("INPUT显示测试结果:"+s);alert("b");};//input调用的方法 
//通过方法动态绑定元素的事件 
std("#div","div"); 
std("#but1","button1"); 
</script> 
</body> 
</html>
Javascript 相关文章推荐
javascript 关闭IE6、IE7
Jun 01 Javascript
jQuery的实现原理的模拟代码 -3 事件处理
Aug 03 Javascript
javascript实现简单的鼠标拖动效果实例
Apr 10 Javascript
JavaScript实现简单获取当前网页网址的方法
Nov 09 Javascript
老生常谈遮罩层 滚动条的问题
Apr 29 Javascript
基于jQuery实现滚动刷新效果
Jan 09 Javascript
微信小程序 页面跳转如何实现传值
Apr 05 Javascript
vue富文本框(插入文本、图片、视频)的使用及问题小结
Aug 17 Javascript
如何在Angular8.0下使用ngx-translate进行国际化配置
Jul 24 Javascript
javascript网页随机点名实现过程解析
Oct 15 Javascript
OpenLayers3实现地图显示功能
Sep 25 Javascript
Vue实现点击当前行变色
Dec 14 Vue.js
jquery跟js初始化加载的多种方法及区别介绍
Apr 02 #Javascript
jquery中子元素和后代元素的区别示例介绍
Apr 02 #Javascript
js 日期比较相关天数代码
Apr 02 #Javascript
你未必知道的JavaScript和CSS交互的5种方法
Apr 02 #Javascript
网页广告中JS代码的信息监听示例
Apr 02 #Javascript
使用jquery中height()方法获取各种高度大全
Apr 02 #Javascript
jquery 判断滚动条到达了底部和顶端的方法
Apr 02 #Javascript
You might like
星际争霸任务指南——神族
2020/03/04 星际争霸
phpcms模块开发之swfupload的使用介绍
2013/04/28 PHP
如何给phpcms v9增加类似于phpcms 2008中的关键词表
2013/07/01 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
2016/09/14 PHP
Laravel使用支付宝进行支付的示例代码
2017/08/16 PHP
Dom与浏览器兼容性说明
2010/10/25 Javascript
jquery仿京东导航/仿淘宝商城左侧分类导航下拉菜单效果
2013/04/24 Javascript
JavaScript中的字符串操作详解
2013/11/12 Javascript
Javascript与jQuery方法的隐藏与显示
2015/01/19 Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
2015/02/28 Javascript
Jquery网页内滑动缓冲导航的实现代码
2015/04/05 Javascript
js实现带按钮的上下滚动效果
2015/05/12 Javascript
JavaScript中Null与Undefined的区别解析
2015/06/30 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
JavaScript 数组- Array的方法总结(推荐)
2016/07/21 Javascript
Node.js与MySQL交互操作及其注意事项
2016/10/05 Javascript
浅析BootStrap中Modal(模态框)使用心得
2016/12/24 Javascript
基于代数方程库Algebra.js解二元一次方程功能示例
2017/06/09 Javascript
vue 实现 tomato timer(蕃茄钟)实例讲解
2017/07/24 Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
[36:14]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第二局
2016/02/28 DOTA
[01:08:17]2018DOTA2亚洲邀请赛3月29日 小组赛B组 EG VS VGJ.T
2018/03/30 DOTA
[45:52]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第二场 12.09
2020/12/12 DOTA
python的re模块应用实例
2014/09/26 Python
python创建进程fork用法
2015/06/04 Python
django 创建过滤器的实例详解
2017/08/14 Python
Python实现Kmeans聚类算法
2020/06/10 Python
Selenium 模拟浏览器动态加载页面的实现方法
2018/05/16 Python
Python SSL证书验证问题解决方案
2020/01/13 Python
解决在keras中使用model.save()函数保存模型失败的问题
2020/05/21 Python
面试后感谢信
2014/02/01 职场文书
2016幼儿教师自荐信范文
2016/01/28 职场文书
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript
基于CSS3画一个iPhone
2021/04/21 HTML / CSS
Nginx 安装SSL证书完成HTTPS部署
2022/04/28 Servers