如何找到 touchmove 事件的实际 event.target?

在移动端开发中,touchmove 事件是非常重要的一个事件,通常用于监听用户手指在屏幕上的滑动操作。但是,当需要对具体某个元素做出响应时,却很难确定 touchmove 事件的实际目标元素(event.target),这就需要我们进行一些额外处理。

1. 认识 touchmove 事件

touchmove 事件是移动端浏览器中的一个触摸事件,当用户手指在屏幕上滑动时就会被触发。它通常用于实现一些滑动的交互效果,例如图片轮播、下拉刷新等等。

-------------------------------------- --------------- -
  -- -- --------- --
---

2. 获取 event.target

在 touchmove 事件中,event.target 表示当前被触摸的元素。然而,由于 touchmove 事件的特殊性质,event.target 很可能并不是我们期望的那个元素。比如,如果用户手指开始滑动时不是在目标元素上,那么 event.target 就不是目标元素。

为了解决这个问题,我们需要使用一个叫做“事件委托”的技术。事件委托指的是将事件处理器添加到一个父元素上,再通过 event.target 属性来识别实际触发事件的子元素。下面是一个使用事件委托的示例代码:

---- ---------------
  ---- ----------------- -------
  ---- ----------------- -------
  ---- ----------------- -------
------
------------------------------------------------------------------ --------------- -
  --- ------ - -------------
  ----- ------- --- ----- -
    -- ----------------------------------- -
      -- -- --------- --
      ------
    -
    ------ - ------------------
  -
---

在这个例子中,我们给父元素 container 添加了 touchmove 事件的处理器。当用户手指在屏幕上滑动时,event.target 可能是 container 元素、其中的某个 item 元素,或者其他地方。所以,我们通过遍历 DOM 树来查找最终的目标元素。

3. 总结

在移动端开发中,使用 touchmove 事件需要特别注意 event.target 的问题。为了正确地获取到实际的目标元素,我们可以使用事件委托的方式来处理该事件。同时,在实际开发中,还需要考虑兼容性、性能等问题。

参考文献:

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/26272