雙擊和單擊事件衝突解決方法
關於單擊事件和雙擊事件,如果單獨拿出來都是非常簡單,這裡也就不多介紹了,具體可以參閱jQuery click事件和jQuery dblclick事件一章節,但是如果同一個元素同時繫結了單擊事件和雙擊事件,那麼就會造成衝突現象,比如我們雙擊此元素指向觸發雙擊事件,但是也完全滿足單擊事件的條件,不但雙擊事件觸發了,單擊事件同樣也會被觸發,下面就通過程式碼例項介紹一下如何解決它們的衝突問題,程式碼如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script> <script type="text/javascript"> $(function(){ var timer=null; $("#bt").bind("click",function(){ clearTimeout(timer); timer=setTimeout(function(){ $("#thediv").append("單擊事件觸發"); },300); }) $("#bt").bind("dblclick",function(){ clearTimeout(timer); $("#thediv").append("雙擊事件觸發"); }) }) </script> <body> <div id="thediv"></div> <input type="button" id="bt" value="檢視效果"/> </body> </html>
以上程式碼實現解決了單擊和雙擊衝突的現象,單擊或者雙擊按鈕的時候只會有一個事件觸發。
一.實現原理:
原理其實及其簡單,就是延遲單擊事件處理函式中相關程式碼的執行(當然並不是說單擊事件沒有觸發),也就是當第一次點選按鈕的時候,如果300毫秒內沒有點選第二次,那麼就認為這是一次單擊事件,然後執行相關的程式碼,如果300毫秒內又點選了第二次,那麼就會取消定時間函式的執行,單擊事件處理函式中的相關程式碼將不會被執行,只會執行雙擊事件處理函式中的程式碼。
二.相關閱讀:
1.clearTimeout()函式可以參閱window clearTimeout()一章節。
2.setTimeout()函式可以參閱window setTimeout()一章節。
3.append()函式可以參閱jQuery append()一章節。
相關文章
- 微信小程式單擊事件與長按事件衝突的解決辦法微信小程式事件
- win10滑鼠單擊變雙擊如何解決_win10系統滑鼠單擊變雙擊的解決方法Win10
- android處理單擊雙擊和滑動事件Android事件
- 滑鼠單擊變雙擊怎麼辦 滑鼠單擊變成雙擊的解決辦法
- 同一個元素的單擊事件與雙擊事件事件
- 雙擊事件(dblclick)時,不觸發單擊事件(click)事件
- onDblClick雙擊事件事件
- hash衝突解決方法
- Android雙擊以及多擊事件Android事件
- 不能雙擊開啟盤的解決方法
- jQuery滑鼠雙擊事件簡單介紹jQuery事件
- css命名衝突解決方法CSS
- JTree禁止雙擊Expand和Collapse的正常解決方法
- QHeaderView的點選和雙擊事件HeaderView事件
- maven依賴衝突以及解決方法Maven
- 依賴衝突時的解決方法
- ALV中滑鼠雙擊事件事件
- Git 解決衝突Git
- git 解決衝突Git
- 解決jquery和其他庫的衝突jQuery
- SVN衝突解決和注意事項
- 解決預設方法衝突的規則
- hash解決衝突的方法優缺點
- linux下SVN衝突的解決方法Linux
- PPT中聲音“衝突”的解決方法
- 使用SUI與JQuery衝突的解決方法UIjQuery
- Android Studio 包衝突解決方法Android
- Git:程式碼衝突常見解決方法Git
- 如何解決 touchstart 事件與 click 事件的衝突事件
- 程式衝突及其解決
- git pull 衝突解決Git
- windows解決埠衝突Windows
- IP衝突解決方案
- SVN 版本衝突解決
- Git衝突解決技巧Git
- 解決ios雙擊頁面上移問題iOS
- 建立結算清單時提示衝突解決方案
- Android事件分發機制、滑動衝突解決Android事件