查找元素手指touchend事件中是(Find element finger is on durin

2019-06-26 08:20发布

我需要发现哪些HTML元素是手指下,当被称为touchend事件。 我使用的代码;

$('.wsSquare').on("mouseup touchend",function(event){
    event.preventDefault();
    event.stopPropagation();
    console.log($(event.target).data());    
});

使用(非触摸)装置上的鼠标,此代码正确地记录在MouseUp事件的时间鼠标下与该元素相关联的数据。

然而触控装置(ipad的狩猎)上,event.target在于touchstart事件期间是指下和touchstart事件下记录该元素的数据元素

我还审查的TouchMove事件的行为,这也有同样的行为(event.target是touchstart元素)。 似乎所有的触摸事件的目标是在手势开始感动的元素。

我需要的手指下访问元素时被称为touchend事件。 我的手势可能会通过许多因素。

编辑

进一步的研究,从挖出了这个规范 。

5.5 touchend事件

用户代理必须分派该事件类型,以指示当用户从触摸表面去除触摸点,还包括其中所述触摸点物理地离开触摸表面的情况下,如被拖动出屏幕的。

此事件的目标必须是在其上时,它首先被放置在表面上,即使触摸点自移动目标元素的交互区外的触摸点开始相同的元素

被删除的触摸点或点必须被包括在的TouchEvent的changedTouches属性,并且必须不被包括在触摸和targetTouches属性。

因此,观察到的行为是正确的,我怎样才能改变这种行为?

Answer 1:

使用document.elementFromPoint从事件给它的坐标,例如,像这样的:

$('.wsSquare').on("mouseup touchend",function(event){
    event.preventDefault();
    event.stopPropagation();
    var changedTouch = event.changedTouches[0];
    var elem = document.elementFromPoint(changedTouch.clientX, changedTouch.clientY);
    // Do something with elem
});


文章来源: Find element finger is on during a touchend event