萬盛學電腦網

 萬盛學電腦網 >> 腳本專題 >> javascript >> 單擊和雙擊事件的沖突處理示例代碼

單擊和雙擊事件的沖突處理示例代碼

   這篇文章主要介紹了單擊和雙擊事件的沖突處理方法,需要的朋友可以參考下

 

  先上代碼:

 

<head> 

<title></title> 

<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script> 

<script type="text/javascript" language="javascript"> 

$(function () { 

$("div").bind("click.a", function () { //單擊事件 

$("body").append("<p>click事件</p>"); 

}) 

$("div").bind("dblclick.a", function () { //雙擊事件 

$("body").append("<p>dblclick事件</p>"); 

}) 

$("div").bind("mouseover.a", function () { //鼠標經過元素的事件 

$("body").append("<p>mouseover事件</p>"); 

}) 

$("div").bind("mouseout.a", function () { //鼠標移出元素的事件 

$("body").append("<p>mouseout事件</p>"); 

}) 

}) 

</script> 

</head> 

<body> 

<div>jQuery命名空間</div> 

</body> 

 

  效果如圖所示,我雙擊的同時,會先觸發兩個單擊事件,這是怎麼回事?還有,如果我不想在雙擊的時候觸發

  單擊事件,而僅僅只是觸發雙擊事件,那該怎麼解決?我也有試過在雙擊的時候,先把單擊事件解綁,

  可這樣一來,單擊事件又不能用了。。。

單擊和雙擊事件的沖突處理示例代碼  三聯

 

  後來在論壇問別人,終於有了答案。那就是使用setTimeout()這個方法設置單擊事件的時間間隔,這個時間間隔一般

  設為300ms,這樣在雙擊的時候,由於雙擊的時間間隔小於300ms,所以就不會產生click事件,而僅僅只是產生

  dblclick事件。在雙擊事件裡面,需要用clearTimeout()函數清除click事件的處理。代碼如下:

 

<script type="text/javascript" language="javascript">
$(function () {
var timer = null;
$("div").bind("click.a", function () { //單擊事件
clearTimeout(timer);
timer = setTimeout(function () { //在單擊事件中添加一個setTimeout()函數,設置單擊事件觸發的時間間隔
$("body").append("<p>click事件</p>");
}, 300);

})
$("div").bind("dblclick.a", function () { //雙擊事件
clearTimeout(timer); //在雙擊事件中,先清除前面click事件的時間處理
$("body").append("<p>dblclick事件</p>");
})
$("div").bind("mouseover.a", function () { //鼠標經過元素的事件
$("body").append("<p>mouseover事件</p>");
})
$("div").bind("mouseout.a", function () { //鼠標移出元素的事件
$("body").append("<p>mouseout事件</p>");
})
})
</script>

 

 

 

 

 

copyright © 萬盛學電腦網 all rights reserved