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 相关文章推荐
用js脚本控制asp.net下treeview的NodeCheck的实现代码
Mar 02 Javascript
js向上无缝滚动,网站公告效果 具体代码
Nov 18 Javascript
再JavaScript的jQuery库中编写动画效果的指南
Aug 13 Javascript
jQuery实现form表单元素序列化为json对象的方法
Dec 09 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
Aug 15 Javascript
Jquery Easyui选项卡组件Tab使用详解(10)
Dec 18 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
Mar 29 Javascript
详解vue-router 2.0 常用基础知识点之router.push()
May 10 Javascript
vue-cli项目中怎么使用mock数据
Sep 27 Javascript
Es6 Generator函数详细解析
Feb 24 Javascript
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法
Sep 03 Javascript
JavaScript队列结构Queue实现过程解析
Mar 07 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显示MySQL数据的三种方法
2008/06/05 PHP
让Json更懂中文(JSON_UNESCAPED_UNICODE)
2011/10/27 PHP
windows7下安装php的php-ssh2扩展教程
2014/07/04 PHP
PHP传参之传值与传址的区别
2015/04/24 PHP
PHP常见错误提示含义解释(实用!值得收藏)
2016/04/25 PHP
CI框架入门之MVC简单示例
2016/11/21 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
Laravel框架创建路由的方法详解
2019/09/04 PHP
jQuery 常见学习网站与参考书
2009/11/09 Javascript
Json字符串转换为JS对象的高效方法实例
2013/05/01 Javascript
JS子父窗口互相操作取值赋值的方法介绍
2013/05/11 Javascript
纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
2015/09/12 Javascript
表单验证插件Validation应用的实例讲解
2015/10/10 Javascript
一道常被人轻视的web前端常见面试题(JS)
2016/02/15 Javascript
JQuery 进入页面默认给已赋值的复选框打钩
2017/03/23 jQuery
简单好用的nodejs 爬虫框架分享
2017/03/26 NodeJs
Bootstrap实现的表格合并单元格示例
2018/02/06 Javascript
vue-cli axios请求方式及跨域处理问题
2018/03/28 Javascript
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
2018/08/13 Javascript
python的re模块应用实例
2014/09/26 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
2017/11/29 Python
python @classmethod 的使用场合详解
2019/08/23 Python
Python numpy数组转置与轴变换
2019/11/15 Python
django formset实现数据表的批量操作的示例代码
2019/12/06 Python
opencv-python的RGB与BGR互转方式
2020/06/02 Python
详解Selenium 元素定位和WebDriver常用方法
2020/12/04 Python
详解Python+Selenium+ChromeDriver的配置和问题解决
2021/01/19 Python
Ubuntu20下的Django安装的方法步骤
2021/01/24 Python
HTML5表格_动力节点Java学院整理
2017/07/11 HTML / CSS
Draper James官网:知名演员瑞茜·威瑟斯彭所创品牌
2017/10/25 全球购物
威盛公司软件C++工程师笔试题面试题
2012/07/16 面试题
工作会议欢迎词
2014/01/16 职场文书
外贸员简历中的自我评价
2014/03/04 职场文书
民主评议党员登记表自我评价
2014/10/20 职场文书
交通事故和解协议书
2015/01/27 职场文书
2015年党风廉政建设工作总结
2015/04/09 职场文书