| 導購 | 订阅 | 在线投稿
分享
 
 
 

JavaScript學習筆記(6) 通過延遲觸發使onDbClick時不觸發onClick事件

來源:互聯網  2008-11-06 07:15:56  評論

在默認的情況下,雙擊事件時是要觸發單擊事件的,但是這種情況有時候卻是我們不想要的,那麽如何才能在雙擊的時候屏蔽單擊事件的觸發呢?網上流傳一種延遲執行的方法,大致思路如下:

1、聲明一個全局的計時器變量如:clickTimer

2、在代理單擊事件裏設置計時器,默認220毫秒之後觸發真正的單擊事件處理函數

3、在雙擊事件裏判斷計時器變量,如果該變量不爲NULL,則說明在觸發該雙擊事件前觸發了單擊事件,取消計時器,因爲真正的單擊事件處理函數在220毫秒之後才會觸發,所以在這個時候結束定時器,則真正單擊事件處理函數不會被執行。

附上代碼:

1var timerClick=null;

2//單擊事件代理

3function _onNodeClick(id){

4 //onNodeClick才是真正的單擊事件處理函數

5 timerClick=window.setTimeout("onNodeClick('"+id+"')",220);

6 }

7//雙擊事件處理函數

8function _onNodeDbClick(id){

9 if(timerClick){

10 window.clearTimeout(timerClick);

11 }

12}

在默認的情況下,雙擊事件時是要觸發單擊事件的,但是這種情況有時候卻是我們不想要的,那麽如何才能在雙擊的時候屏蔽單擊事件的觸發呢?網上流傳一種延遲執行的方法,大致思路如下: 1、聲明一個全局的計時器變量如:clickTimer 2、在代理單擊事件裏設置計時器,默認220毫秒之後觸發真正的單擊事件處理函數 3、在雙擊事件裏判斷計時器變量,如果該變量不爲NULL,則說明在觸發該雙擊事件前觸發了單擊事件,取消計時器,因爲真正的單擊事件處理函數在220毫秒之後才會觸發,所以在這個時候結束定時器,則真正單擊事件處理函數不會被執行。 附上代碼: 1var timerClick=null; 2//單擊事件代理 3function _onNodeClick(id){ 4 //onNodeClick才是真正的單擊事件處理函數 5 timerClick=window.setTimeout("onNodeClick('"+id+"')",220); 6 } 7//雙擊事件處理函數 8function _onNodeDbClick(id){ 9 if(timerClick){ 10 window.clearTimeout(timerClick); 11 } 12}
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有