自定義封裝移動端事件庫

2021-09-29 17:40:31 字數 2371 閱讀 8538

封裝移動端事件庫的意義

移動端使用click事件會有延遲

有許多左滑或者右滑的操作,原生js沒有

有時業務會需要長按事件,原生js沒有

開始封裝

思路分析

既然是庫,那麼可以先寫乙個匿名自執行函式(保護內部變數不受汙染,定義和呼叫合為一體)

開始操作

第一步:匿名自執行函式

(

function

(window)

)(window)

;

第二步:內部架構搭建

對外提供的介面 + 初始化方法

(

function

(window)

mymobile.prototype =},

}})(window)

;

第三步:原型方法新增(全部的**)

(

function

(window)

mymobile.prototype =},

/*單擊事件:

* 為了規避click的300ms的延遲,自定義乙個單擊事件

觸控時間小於500ms為單擊事件

* */

tap:

function

(handler)

break;}

}},/**

* 長按

* @param handler

* 大於500ms為長按事件

*/longtag:

function

(handler)

,500

)break

;case

"touchmove"

://如果中間有移動也清除定時器

cleartimeout

(timerid)

break

;case

"touchend"

://如果在500ms之內抬起了手指,則需要定時器

cleartimeout

(timerid)

;break;}

}},/**

* 左側滑動。

* 記錄手指按下的左邊,在離開的時候計算 deltax是否滿足左滑的條件

*/slideleft:

function

(handler)

break;}

}},/* 右側滑動 */

rightleft:

function

(e)}

//全域性$賦值 可以直接呼叫

window.$ = window.mymobile = mymobile;})

(window)

;

頁面呼叫

<

!doctype

>

"zh-cn"

>

"utf-8"

>

標題<

/title>

"keywords" content=

"關鍵字"

/>

"description" content=

"網頁描述"

/>

"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;" name=

"viewport"

/>

"./event.js"

>

<

/script>

<

/head>

<

/style>

點我<

/button>

$("button").

tap(

function

(e))$(

"button").

longtag

(function()

)$("button").

slideleft

(function

(e))

<

/script>

<

/body>

<

/html>

faq

大家在使用的時候可能會有一些疑問,比如說我左滑事件為什麼會觸發單擊事件?一般實際業務中,不存在這種場景。如果有,某乙個元素既有單擊事件又有左滑事件,那做乙個節流閥就ok了,做乙個判斷,如果是左滑或者右滑事件就禁止觸發單擊事件。

自定義事件

public event eventhandleropenprogress private void onopenprogress progresseventargs e if openprogress null openprogress this,e public class progressev...

自定義事件

簡單的自定義事件 首先定義乙個類來監聽客戶端事件,這裡我們監聽鍵盤的輸入。定義乙個委託。public delegate void userrequest object sender,eventargs e 前面的object用來傳遞事件的發生者,後面的eventargs用來傳遞事件的細節,現在暫時沒...

js自定義事件和jQuery自定義事件

1.簡述 js自定義事件是用來擴充套件dom元素的行為的,可以讓dom元素監聽自定義事件,並手動觸發,更加靈活地實現一些操作。jquery自定義事件使用場景更加廣泛一些,不僅限於dom監聽自定義事件,可以任意自定義事件並隨時觸發。用於實現觀察者模式,為大型專案解耦非常方便。2.js自定義事件,js可...