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 相关文章推荐
学习YUI.Ext 第二天
Mar 10 Javascript
Firefox和IE浏览器兼容JS脚本写法小结
Jul 07 Javascript
IE6下CSS图片缓存问题解决方法
Dec 09 Javascript
JavaScript 判断日期格式是否正确的实现代码
Jul 04 Javascript
select标签模拟/美化方法采用JS外挂式插件
Apr 01 Javascript
js弹出div并显示遮罩层
Feb 12 Javascript
jQuery使用fadein方法实现渐出效果实例
Mar 27 Javascript
详谈javascript中的cookie
Jun 03 Javascript
让JavaScript中setTimeout支持链式操作的方法
Jun 19 Javascript
详解JavaScript中Hash Map映射结构的实现
May 21 Javascript
微信小程序实现消息框弹出动画
Apr 18 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
Sep 23 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函数
2006/12/06 PHP
php中如何同时使用session和cookie来保存用户登录信息
2013/07/05 PHP
PHPMailer的主要功能特点和简单使用说明
2014/02/17 PHP
WAF的正确bypass
2017/01/05 PHP
利用onresize使得div可以随着屏幕大小而自适应的代码
2010/01/15 Javascript
JS 如果改变span标签的是否隐藏属性
2011/10/06 Javascript
javascript模版引擎-tmpl的bug修复与性能优化分析
2011/10/23 Javascript
js 操作select和option常用代码整理
2012/12/13 Javascript
JavaScript不刷新实现浏览器的前进后退功能
2014/11/05 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
2015/02/17 Javascript
javascript同步服务器时间和同步倒计时小技巧
2015/09/24 Javascript
jquery及js实现动态加载js文件的方法
2016/01/21 Javascript
jquery插件jquery.LightBox.js实现点击放大图片并左右点击切换效果(附demo源码下载)
2016/02/25 Javascript
JavaScript实现数据类型的相互转换
2016/03/06 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
2017/02/18 Javascript
Angular.js中$resource高大上的数据交互详解
2017/07/30 Javascript
聊聊Vue.js的template编译的问题
2017/10/09 Javascript
深入理解JavaScript 箭头函数
2019/05/30 Javascript
微信小程序使用npm包的方法步骤
2019/08/13 Javascript
TypeScript类型声明书写详解
2019/08/28 Javascript
Vue——解决报错 Computed property &quot;****&quot; was assigned to but it has no setter.
2020/12/19 Vue.js
[46:55]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
python基础教程项目二之画幅好画
2018/04/02 Python
Matplotlib scatter绘制散点图的方法实现
2020/01/02 Python
浅谈pytorch、cuda、python的版本对齐问题
2020/01/15 Python
Python图像读写方法对比
2020/11/16 Python
python 实用工具状态机transitions
2020/11/21 Python
CSS3截取字符串实例代码【推荐】
2018/06/07 HTML / CSS
网友共享的几个面试题关于Java和Unix等方面的
2016/09/08 面试题
运动会广播稿100字
2014/01/11 职场文书
预备党员入党自我评价范文
2014/03/10 职场文书
罗马假日观后感
2015/06/08 职场文书
中学校园广播稿
2015/08/18 职场文书
2016年国陪研修感言
2015/11/18 职场文书
北京大学中文系教授推荐的10本小说
2019/08/08 职场文书
Python实现批量将文件复制到新的目录中再修改名称
2022/04/12 Python