0

我在“.container”DIV 元素中创建了 5 个 DIV,如下所示;

<div class="container">
   <div class="elem1">No 1</div>
   <div class="elem2">No 2</div>
   <div class="elem3">No 3</div>
   <div class="elem4">No 4</div>
   <div class="elem5">No 5</div>
</div>

touchstarttouchmovetouchend事件已分配给.container元素。

在 中的容器触摸启动时.elem1touchstart事件处理程序在event.target.

在 '.elem4' 中容器的触摸端,touchend事件处理程序在中接收“elem1”,event.target但我在elem4中释放触摸。这就是问题。我需要在这里得到elem4

如何在touchend事件处理程序上获取确切的元素?通过使用接触点对此有何解决方案/建议?

4

2 回答 2

0

use event.pageX, event.pageY, document.elementFromPoint in the following way:

$('.container').bind('touchend', function(ev){
    ev.preventDefault();
    ev.stopPropagation();
    var el = document.elementFromPoint(ev.pageX, ev.pageY);
});

i made an example of this idea here:

http://jsfiddle.net/MPn3L/

(note that i simulated the mouseup event, but it works the same with touchend on touch devices)

that's the best solution i can think of.

于 2013-10-07T06:53:47.830 回答
0

你在使用 jQuery 来监听你的触摸事件吗?我会做类似的事情:JSFiddle。本质上,我正在监听触摸类本身的触摸事件,然后从 ID 中提取特定数据。您可以用任何东西代替 ID,无论是数据属性还是 innerHTML。事件冒泡会变得很麻烦,这个解决方案过去对我有用。

PS 您知道您现在可以在 Google Chrome 中模拟触摸事件吗?看看这个页面!

于 2013-10-07T05:58:30.547 回答