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 相关文章推荐
jQuery第三课 修改元素属性及内容的代码
Mar 14 Javascript
mysql输出数据赋给js变量报unterminated string literal错误原因
May 22 Javascript
jquery.validate使用攻略 第五步 正则验证
Jul 01 Javascript
不同浏览器的怪癖小结
Jul 11 Javascript
javascript提取URL的搜索字符串中的参数(自定义函数实现)
Jan 22 Javascript
使用jquery动态加载Js文件和Css文件
Oct 24 Javascript
javascript从作用域链谈闭包
Jul 29 Javascript
JavaScript实现格式化字符串函数String.format
Dec 16 Javascript
Vue 源码分析之 Observer实现过程
Mar 29 Javascript
JavaScript:ES2019 的新特性(译)
Aug 08 Javascript
layui 弹出层值回传解决方式
Nov 14 Javascript
vue+elementui实现点击table中的单元格触发事件--弹框
Jul 18 Javascript
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 星际争霸
php cli 小技巧
2013/06/03 PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
2015/02/12 PHP
PHP实现上传图片到 zimg 服务器
2016/10/19 PHP
YII框架中使用memcache的方法详解
2017/08/02 PHP
Laravel timestamps 设置为unix时间戳的方法
2019/10/11 PHP
php并发加锁问题分析与设计代码实例讲解
2021/02/26 PHP
完整显示当前日期和时间的JS代码
2007/09/17 Javascript
js中数组Array的一些常用方法总结
2013/08/12 Javascript
浅析Cookie中的Path与domain
2013/12/18 Javascript
js中取得变量绝对值的方法
2015/01/03 Javascript
EasyUi combotree 实现动态加载树节点
2016/04/01 Javascript
JavaScript动态添加事件之事件委托
2016/07/12 Javascript
微信小程序 倒计时组件实现代码
2016/10/24 Javascript
javascript 删除数组元素和清空数组的简单方法
2017/02/24 Javascript
Node.js之网络通讯模块实现浅析
2017/04/01 Javascript
详解angular用$sce服务来过滤HTML标签
2017/04/11 Javascript
bootstrap paginator分页前后台用法示例
2017/06/17 Javascript
安装vue-cli报错 -4058 的解决方法
2017/10/19 Javascript
node文件批量重命名的方法示例
2017/10/23 Javascript
Bootstrap table使用方法汇总
2017/11/17 Javascript
vue组件中使用iframe元素的示例代码
2017/12/13 Javascript
vue数据响应式原理知识点总结
2020/02/16 Javascript
uniapp微信小程序:key失效的解决方法
2021/01/20 Javascript
python递归计算N!的方法
2015/05/05 Python
基础的十进制按位运算总结与在Python中的计算示例
2016/06/28 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
2018/07/10 Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
2019/05/13 Python
Pandas —— resample()重采样和asfreq()频度转换方式
2020/02/26 Python
浅谈python 中的 type(), dtype(), astype()的区别
2020/04/09 Python
Python用dilb提取照片上人脸的示例
2020/10/26 Python
PyCharm2020.3.2安装超详细教程
2021/02/08 Python
党的群众路线教育实践活动批评与自我批评
2014/02/16 职场文书
2015年党员自评材料
2014/12/17 职场文书
Python中for后接else的语法使用
2021/05/18 Python
《宝可梦》动画制作25周年到来 官方发布特别纪念视频
2022/04/01 日漫