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中阻止事件冒泡几种方式及其区别介绍
Jan 15 Javascript
JS获取URL中参数值(QueryString)的4种方法分享
Apr 12 Javascript
JQuery实现表格动态增加行并对新行添加事件
Jul 30 Javascript
javascript中eval解析JSON字符串
Feb 27 Javascript
AngularJS基础 ng-mousemove 指令简单示例
Aug 02 Javascript
又一款js时钟!transform实现时钟效果
Aug 15 Javascript
jquery ajax后台返回list,前台用jquery遍历list的实现
Oct 30 Javascript
JavaScript对象封装的简单实现方法(3种方法)
Jan 03 Javascript
JS全角与半角转化实例(分享)
Jul 04 Javascript
mock.js实现模拟生成假数据功能示例
Jan 15 Javascript
mpvue开发音频类小程序踩坑和建议详解
Mar 12 Javascript
基于Vue实现电商SKU组合算法问题
May 29 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
用php写的serv-u的web申请账号的程序
2006/10/09 PHP
PHP产生随机字符串函数
2006/12/06 PHP
PHP爆绝对路径方法收集整理
2012/09/17 PHP
php求正负数数组中连续元素最大值示例
2014/04/11 PHP
PHP函数addslashes和mysql_real_escape_string的区别
2014/04/22 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
2014/08/20 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
2014/09/23 PHP
YiiFramework入门知识点总结(图文教程)
2015/12/28 PHP
Laravel6.18.19如何优雅的切换发件账户
2020/06/14 PHP
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
Js+Flash实现访问剪切板操作
2012/11/20 Javascript
jquery提取元素里的纯文本不包含span等里的内容
2013/09/30 Javascript
jQuery之ajax删除详解
2014/02/27 Javascript
编写高效jQuery代码的4个原则和5个技巧
2014/04/24 Javascript
js中一维数组和二位数组中的几个问题示例说明
2014/07/17 Javascript
jQuery调用WebMethod(PageMethod) NET2.0的方法
2016/04/15 Javascript
Node.js Sequelize如何实现数据库的读写分离
2016/10/23 Javascript
基于iscroll.js实现下拉刷新和上拉加载效果
2016/11/28 Javascript
详解ElementUI之表单验证、数据绑定、路由跳转
2017/06/21 Javascript
React + webpack 环境配置的方法步骤
2017/09/07 Javascript
Echarts之悬浮框中的数据排序问题
2018/11/08 Javascript
vue下axios拦截器token刷新机制的实例代码
2020/01/17 Javascript
python字典get()方法用法分析
2015/04/17 Python
用C++封装MySQL的API的教程
2015/05/06 Python
python中map()与zip()操作方法
2016/02/27 Python
Python获取时间范围内日期列表和周列表的函数
2019/08/05 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
2020/05/15 Python
护理专业学生的求职信范文
2013/12/11 职场文书
初三化学教学反思
2014/01/23 职场文书
艺术教育实施方案
2014/05/03 职场文书
村干部群众路线整改措施思想汇报
2014/10/12 职场文书
商务宴请邀请函范文
2015/02/02 职场文书
2016年“我们的节日·清明节”活动总结
2016/04/01 职场文书
Python 语言实现六大查找算法
2021/06/30 Python
vue route新窗口跳转页面并且携带与接收参数
2022/04/10 Vue.js
golang的文件创建及读写操作
2022/04/14 Golang