我有一个名称为“element”的对象。如果有人触摸了数位板,我想返回触摸位置相对于对象(即i)的x和y坐标。 e。对象的左上 Angular 的坐标为x = 0和y = 0。

我知道如何在台式机上实现此操作:

$(function() {
$(document).mousedown(function(e) {
  var offset = $("#element").offset();
  var relativeX = (e.pageX - offset.left);
  var relativeY = (e.pageY - offset.top);
  alert(relativeX+':'+relativeY);
  $(".position").val("afaf");
});
});

因此,我猜应该将“mousedown”一词替换为“touchstart”。但是,它仍然不起作用。

如何更改上述代码,使其在具有“touchstart”而不是“mousedown”的平板电脑上运行?

最佳答案

您必须显式从事件中拉出touches对象,它不直接包含坐标。查看下面的代码的第二行。

这是我一直用于获取触摸/指针坐标的代码:

    if(e.type == 'touchstart' || e.type == 'touchmove' || e.type == 'touchend' || e.type == 'touchcancel'){
        var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
        x = touch.pageX;
        y = touch.pageY;
    } else if (e.type == 'mousedown' || e.type == 'mouseup' || e.type == 'mousemove' || e.type == 'mouseover'|| e.type=='mouseout' || e.type=='mouseenter' || e.type=='mouseleave') {
        x = e.clientX;
        y = e.clientY;
    }

将其放在事件监听器中,该监听器将监听所有这些事件中的任何一个或所有事件,并添加偏移量计算,这应该可以工作。

10-07 19:51
查看更多