封裝移動端事件庫的意義移動端使用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可...