jQuery防止click雙擊多次提交及傳遞動(dòng)態(tài)函數(shù)或多參數(shù)
更新時(shí)間:2014年04月02日 16:48:19 作者:
這篇文章主要介紹了jQuery防止click雙擊多次提交及傳遞動(dòng)態(tài)函數(shù)方法,需要的朋友可以參考下
今天是寫的是關(guān)于JQ的雙擊事件防止多次提交的問題,并且通過函數(shù)可以批量定義,通能性更強(qiáng)了,通過方法動(dòng)態(tài)綁定元素的事件。而且可以動(dòng)態(tài)傳遞函數(shù)名或者多參數(shù)等(本實(shí)例只傳遞函數(shù)名通過Eval調(diào)用)。
我們都知道在jQuery的事件綁定中,執(zhí)行雙擊事件(dblclick)時(shí)能觸發(fā)兩次單擊事件(click)。即一個(gè)標(biāo)簽元素(如div等),如果元素同時(shí)綁定了單擊事件(click)和雙擊事件(dblclick),那么執(zhí)行單擊事件(click)時(shí),不會(huì)觸發(fā)雙擊事件(dblclick), 執(zhí)行雙擊事件(dblclick)時(shí)卻會(huì)觸發(fā)兩次單擊事件(click)。
先看一下點(diǎn)擊事件的執(zhí)行順序:
單擊(click):mousedown,mouseout,click;
雙擊(dblclick):mousedown,mouseout,click , mousedown,mouseout,click,dblclick;
在雙擊事件(dblclick),觸發(fā)的兩次單擊事件(click)中,第一次的單擊事件(click)會(huì)被屏蔽掉,但第二次不會(huì)。也就是說雙擊事件(dblclick)會(huì)返回一次單擊事件(click)結(jié)果和一次雙擊事件(dblclick) 結(jié)果。而不是一次雙擊事件(dblclick)結(jié)果和兩次單擊事件結(jié)果(click)。
如此這般的話,只需消滅掉多余的一次單擊事件(click),這個(gè)問題就解決了。
效果如下圖:
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雙擊多次執(zhí)行及傳遞動(dòng)態(tài)函數(shù)方法</title>
<script type="text/javascript" src="http://www.86y.org/js/jquery.min.js"></script>
</head>
<body>
<div id="show">顯示測(cè)試結(jié)果:</div>
<div style="background:#f60;color:#fff;width:80px;padding:10px 20px;" id="div" onclick="ss1('DIV事件')">點(diǎn)擊我吧</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顯示測(cè)試結(jié)果:"+s);alert("a");};//div調(diào)用的方法
var ss2=function(s){$("#show").html("INPUT顯示測(cè)試結(jié)果:"+s);alert("b");};//input調(diào)用的方法
//通過方法動(dòng)態(tài)綁定元素的事件
std("#div","div");
std("#but1","button1");
</script>
</body>
</html>
我們都知道在jQuery的事件綁定中,執(zhí)行雙擊事件(dblclick)時(shí)能觸發(fā)兩次單擊事件(click)。即一個(gè)標(biāo)簽元素(如div等),如果元素同時(shí)綁定了單擊事件(click)和雙擊事件(dblclick),那么執(zhí)行單擊事件(click)時(shí),不會(huì)觸發(fā)雙擊事件(dblclick), 執(zhí)行雙擊事件(dblclick)時(shí)卻會(huì)觸發(fā)兩次單擊事件(click)。
先看一下點(diǎn)擊事件的執(zhí)行順序:
單擊(click):mousedown,mouseout,click;
雙擊(dblclick):mousedown,mouseout,click , mousedown,mouseout,click,dblclick;
在雙擊事件(dblclick),觸發(fā)的兩次單擊事件(click)中,第一次的單擊事件(click)會(huì)被屏蔽掉,但第二次不會(huì)。也就是說雙擊事件(dblclick)會(huì)返回一次單擊事件(click)結(jié)果和一次雙擊事件(dblclick) 結(jié)果。而不是一次雙擊事件(dblclick)結(jié)果和兩次單擊事件結(jié)果(click)。
如此這般的話,只需消滅掉多余的一次單擊事件(click),這個(gè)問題就解決了。
效果如下圖:
http://images.cnitblog.com/i/554071/201404/010846579687197.png
源代碼如下:
復(fù)制代碼 代碼如下:
<!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雙擊多次執(zhí)行及傳遞動(dòng)態(tài)函數(shù)方法</title>
<script type="text/javascript" src="http://www.86y.org/js/jquery.min.js"></script>
</head>
<body>
<div id="show">顯示測(cè)試結(jié)果:</div>
<div style="background:#f60;color:#fff;width:80px;padding:10px 20px;" id="div" onclick="ss1('DIV事件')">點(diǎn)擊我吧</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顯示測(cè)試結(jié)果:"+s);alert("a");};//div調(diào)用的方法
var ss2=function(s){$("#show").html("INPUT顯示測(cè)試結(jié)果:"+s);alert("b");};//input調(diào)用的方法
//通過方法動(dòng)態(tài)綁定元素的事件
std("#div","div");
std("#but1","button1");
</script>
</body>
</html>
您可能感興趣的文章:
- jQuery中$.click()無效問題分析
- jquery單選框radio綁定click事件實(shí)現(xiàn)方法
- jquery bind(click)傳參讓列表中每行綁定一個(gè)事件
- 使用jQuery的attr方法來修改onclick值
- jquery 為a標(biāo)簽綁定click事件示例代碼
- jquery trigger偽造a標(biāo)簽的click事件取代window.open方法
- JQuery給元素綁定click事件多次執(zhí)行的解決方法
- jQuery focus和blur事件的應(yīng)用詳解
- jquery focus(fn),blur(fn)方法實(shí)例代碼
- jQuery解決input元素的blur事件和其他非表單元素的click事件沖突問題
相關(guān)文章
jquery+css實(shí)現(xiàn)簡(jiǎn)單的圖片輪播效果
這篇文章主要介紹了jquery+css實(shí)現(xiàn)簡(jiǎn)單的圖片輪播效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
jQuery實(shí)現(xiàn)公告新聞自動(dòng)滾屏效果實(shí)例代碼
這篇文章主要介紹了jQuery實(shí)現(xiàn)公告新聞自動(dòng)滾屏效果實(shí)例代碼的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07
jquery 步驟進(jìn)度軸插件的實(shí)現(xiàn)代碼
今天給大家分享一個(gè)jquery插件之步驟進(jìn)度軸的實(shí)現(xiàn)思路,這個(gè)功能在一些網(wǎng)站注冊(cè)賬號(hào)時(shí)一般都會(huì)用到,今天就通過實(shí)例代碼給大家詳細(xì)介紹下,感興趣的朋友跟隨小編一起看看吧2021-05-05
基于jquery的loading 加載提示效果實(shí)現(xiàn)代碼
有時(shí)候?yàn)榱烁玫挠脩趔w驗(yàn),使用jquery的朋友可以參考下代碼。2011-09-09
使用DataTable插件實(shí)現(xiàn)異步加載數(shù)據(jù)
本文給大家分享的是Jquery+dataTable插件來實(shí)現(xiàn)異步加載數(shù)據(jù)的示例代碼,非常實(shí)用,有需要的小伙伴可以參考下2017-11-11
jQuery基于擴(kuò)展實(shí)現(xiàn)的倒計(jì)時(shí)效果
這篇文章主要介紹了jQuery基于擴(kuò)展實(shí)現(xiàn)的倒計(jì)時(shí)效果,涉及jQuery擴(kuò)展的使用與時(shí)間操作的相關(guān)技巧,需要的朋友可以參考下2016-05-05

