Touchmove獲取當(dāng)前觸摸的Dom節(jié)點(diǎn)

近期為自己的app增加一個(gè)通訊錄首字母導(dǎo)航的功能,如下圖藍(lán)色框部分,需求很好理解,在手指觸摸相應(yīng)字母時(shí),通訊錄自動(dòng)滾動(dòng)到相應(yīng)首字母的聯(lián)系人。


image.png

這邊通過需求分析,很容易聯(lián)想到,使用touchstart和touchmove這兩個(gè)方法來處理響應(yīng)操作,touchstart比較簡單就不說了,監(jiān)聽touchmove事件時(shí),發(fā)現(xiàn)一個(gè)問題,當(dāng)我無論如何在監(jiān)聽元素上移動(dòng)我的手指,所返回的event.touches[0].target永遠(yuǎn)指向第一個(gè)觸摸元素的event對象,而不會指向我當(dāng)前手指所觸摸的元素。

這也就意味著我無法通過回調(diào)返回的event來獲取當(dāng)前手指觸摸的元素

通過查閱資料,這是普遍存在的問題,最推薦的解決方案是使用

elementFromPoint
語法:
getMyElement = document.elementFromPoint ( myX , myY )
參數(shù):
myX :  必選項(xiàng)。整數(shù)(Integer)。單位:象素(Pixel)。定位橫坐標(biāo)偏移量。
myY :  必選項(xiàng)。整數(shù)(Integer)。單位:象素(Pixel)。定位縱坐標(biāo)偏移量。
返回值:
getMyElement :  對象(Element)。返回當(dāng)前文檔上處于指定坐標(biāo)位置最頂層的Dom元素。

我們通過touchmove事件返回的event對象,可以獲取當(dāng)前手指觸摸元素的clientX和clientY的值,將值傳入document.elementFromPoint就可獲取當(dāng)前觸摸的值,這里需要注意的是此方法返回的是最頂層的Dom,所以務(wù)必將你需要的Dom的z-index設(shè)置為最高,分享些許我在此項(xiàng)目的核心代碼:

/**
*獲取存儲當(dāng)前Dom位置的對象
**/
var myLocation = e.originalEvent.changedTouches[0];

/**
*取clientX及clientY并傳入elementFromPoint獲取當(dāng)前手指觸摸的Dom,大功告成,現(xiàn)在此Dom可以任你擺布了
**/
var realTarget = document.elementFromPoint(myLocation.clientX, myLocation.clientY);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 觸摸事件: 三種在規(guī)范中列出并獲得跨移動(dòng)設(shè)備廣泛實(shí)現(xiàn)的基本觸摸事件: 1.touchstart:手指放在一個(gè)DOM...
    晨光2016閱讀 24,522評論 0 13
  • 基于html5的移動(dòng)web頁面搭建技術(shù)總結(jié) 1.技術(shù)要點(diǎn) 1.1面向不同尺寸的手機(jī)屏幕,頁面布局適配問題。 網(wǎng)頁的...
    敲代碼的張閱讀 1,591評論 0 3
  • 基于html5的移動(dòng)web頁面搭建技術(shù)總結(jié)1.技術(shù)要點(diǎn)1.1面向不同尺寸的手機(jī)屏幕,頁面布局適配問題。 網(wǎng)頁的he...
    敲代碼的張閱讀 404評論 0 0
  • 之前的時(shí)候,舍友在宿舍看“第八號當(dāng)鋪”這部電視劇,我在旁邊也跟著看了一點(diǎn)。雖然我沒看全,但是也大體了解了其中的意思...
    太太太梓飛閱讀 1,044評論 0 3
  • 過了一個(gè)周末,日記停了兩天!今天孩子上學(xué)了,日記走起!孩子放學(xué)回家,吃過晚飯開始寫作業(yè)。寫完之后,照例和他...
    博博爸閱讀 163評論 0 0

友情鏈接更多精彩內(nèi)容