DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> jQuery入門知識 >> JQuery特效代碼 >> 單擊和雙擊事件的沖突處理示例代碼
單擊和雙擊事件的沖突處理示例代碼
編輯:JQuery特效代碼     
先上代碼:
. 代碼如下:
<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>

如此,這個問題就解決了!
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved