目有個交互須要實現手指滑動的交互,pc端使用mousedown,mousemove,mouseup監聽實現。
javascript
但在ios設備上mousemove是很差監聽的,同類的方法是touchstart,touchmove,touchend。java
項目需求,須要用到拖動事件。因爲不須要考慮IE8等低端瀏覽器的兼容性, 因此想到HTML5中的drag
事件, 發現移動端 android & IOS
並不支持 drag
事件。如今讓咱們來介紹一下移動端的經常使用事件吧jquery
單擊事件,相似於PC端的click,但在移動端中,連續click的觸發有200ms ~ 300ms的延遲。android
觸摸事件,有touchstart touchmove touchend touchcancel 四種之分,經常使用的有:ios
touchstart:當有新手指觸控到綁定的元素,會觸發一次事件。 數組
touchmove:當有手指放綁定的元素上會一直觸發,從觸發條件準確的說只有手指移動時才觸發。可是通過測試,這一項檢測十分靈敏,人爲手指保持不動,系統也會偵測到細小的移動。因此會一直觸發。瀏覽器
touchend:當有手指從綁定元素上擡起,會觸發一次。app
touchcancel:可由系統進行的觸發(不經常使用事件),好比手指觸摸屏幕的時候,忽然alert了一下,或者系統中其餘打斷了touch的行爲,則能夠觸發該事件。ide
在移動端中上面的三個觸摸事件每一個事件都有如下列表測試
changedTouches:保存了全部引起事件的手指信息
targetTouches:保存了當前對象上全部觸摸點的列表;
touches:保存了當前全部觸碰屏幕的手指信息
2.1.1事件屬性(只讀屬性)
移動端觸摸事件屬性裏的數組元素的屬性:每一個事件有列表,每一個事件列表還有如下屬性
好比:想獲取手指拖動滑動的座標位置,直接使用event.clientX是不起做用的,要使用event.changedTouches[0].clientX纔好,
若是是jquery的event對象,使用event.originalEvent.changedTouches[0].clientX。
調用事件方法:
(1)jquery方法:$(document).bind("touchend", function(e){});
(2)javascript方法:document.addEventListener("touchend",function(e){});
觸碰事件,我目前還不知道它和touch的區別,通常用於代替click事件,有tap longTap singleTap doubleTap四種之分,有時會用tap代替click事件
tap: 手指碰一下屏幕會觸發
longTap: 手指長按屏幕會觸發
singleTap: 手指碰一下屏幕會觸發
doubleTap: 手指雙擊屏幕會觸發
滑動事件,有swipe swipeLeft swipeRight swipeUp swipeDown 五種之分
swipe:手指在屏幕上滑動時會觸發
swipeLeft:手指在屏幕上向左滑動時會觸發
swipeRight:手指在屏幕上向右滑動時會觸發
swipeUp:手指在屏幕上向上滑動時會觸發
swipeDown:手指在屏幕上向下滑動時會觸發
當兩個手指觸摸屏幕時就會產生手勢,手勢一般會改變顯示項的大小,或者旋轉顯示項。有三個手勢事件,分別以下。
當有新手指觸控到綁定的元素,會觸發一次事件。