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中的prototype属性使用说明(函数功能扩展)
Aug 16 Javascript
jquery实现excel导出的方法
Apr 04 Javascript
利用函数的惰性载入提高javascript代码执行效率
May 05 Javascript
自定义百度分享的分享按钮
Mar 18 Javascript
js实现Select列表各项上移和下移的方法
Aug 14 Javascript
jQuery实现移动端手机商城购物车功能
Sep 24 Javascript
使用 Vue cli 3.0 构建自定义组件库的方法
Apr 30 Javascript
Vue使用Clipboard.JS在h5页面中复制内容实例详解
Sep 03 Javascript
JavaScript this在函数中的指向及实例详解
Oct 14 Javascript
element-ui 文件上传修改文件名的方法示例
Nov 05 Javascript
JS实现旋转木马轮播图
Jan 01 Javascript
vue实现学生信息管理系统
May 30 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 IN_ARRAY 函数使用注意事项
2010/07/24 PHP
单点登录 Ucenter示例分析
2013/10/29 PHP
php中文繁体和简体相互转换的方法
2015/03/21 PHP
JavaScript 判断日期格式是否正确的实现代码
2011/07/04 Javascript
js文件缓存之版本管理详解
2013/07/05 Javascript
Javascript进制转换实例分析
2015/05/14 Javascript
基于JavaScript实现定时跳转到指定页面
2016/01/01 Javascript
深入探秘jquery瀑布流的实现
2016/01/30 Javascript
iScroll.js 使用方法参考
2016/05/16 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
2016/08/15 Javascript
JS常用正则表达式总结【经典】
2017/05/12 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
vue生成随机验证码的示例代码
2017/09/29 Javascript
Angular使用操作事件指令ng-click传多个参数示例
2018/03/27 Javascript
vue观察模式浅析
2018/09/25 Javascript
Nodejs封装类似express框架的路由实例详解
2020/01/05 NodeJs
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
2020/08/17 Javascript
Python中线程的MQ消息队列实现以及消息队列的优点解析
2016/06/29 Python
Python多图片合并PDF的方法
2019/01/03 Python
对python 合并 累加两个dict的实例详解
2019/01/21 Python
详解django中url路由配置及渲染方式
2019/02/25 Python
python实现通过flask和前端进行数据收发
2019/08/22 Python
python使用turtle库绘制奥运五环
2020/02/24 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
2020/09/09 Python
python如何写个俄罗斯方块
2020/11/06 Python
德国骆驼商店:ActiveFashionWorld
2017/11/18 全球购物
什么样的创业计划书可行性高?
2014/02/01 职场文书
物理研修随笔感言
2014/02/14 职场文书
办公室副主任职责范本
2014/03/08 职场文书
大学生求职信例文
2014/06/29 职场文书
高中学校对照检查材料
2014/08/31 职场文书
党支部遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
解决linux下redis数据库overcommit_memory问题
2022/02/24 Redis
Spring Boot DevTools 全局配置学习指南
2022/03/31 Java/Android
JavaScript获取URL参数的方法分享
2022/04/07 Javascript