如何使用jquery-mobile获取tap事件的位置/坐标?

时间:2011-02-14 12:52:45

标签: jquery mobile position jquery-mobile tap

Jquery-mobile支持这些事件:

http://jquerymobile.com/demos/1.0a3/docs/api/events.html

如何在移动设备上获取点击事件的位置(例如在图像中)?

$('#myimg').bind('tap', function(e){
  var x = ???;
  var y = ???;

  alert([x, y]);
})

2 个答案:

答案 0 :(得分:3)

你不会得到pageX& pageY是你得到的touchcancel事件,它不包含任何坐标信息(毕竟它是非触摸的)。这不是实际的点击或点击,它是一个没有移动的触摸事件(超过阈值)并且足够快。

我在为jQuery使用touchswipe插件时遇到了同样的问题,并且必须通过在touchstart事件上存储坐标并在取消事件上检索它来解决它,以便能够提取坐标。

您需要将这些保存在启动事件中(jquery mobile中的“vmousedown”):

  event.touches[0].pageX
  event.touches[0].pageY

此外,在移动设备上,您应该将坐标乘以window.devicePixelRatio以获得屏幕上的准确位置。

答案 1 :(得分:0)

我不知道Jquery手机,但我刚刚尝试了我的iphone中的画布演示页面...你只需点击并绘制圆圈就可以了。

我只是像上面提到的人一样使用e.pageX和e.pageY

function getCursorPosition(e) {
    var x;
    var y;
    if (e.pageX != undefined && e.pageY != undefined) {
    x = e.pageX;
    y = e.pageY;
    }
    else {
    x = e.clientX + document.body.scrollLeft +
            document.documentElement.scrollLeft;
    y = e.clientY + document.body.scrollTop +
            document.documentElement.scrollTop;
    }
    x -= Ccanvas.offsetLeft;
    y -= Ccanvas.offsetTop;

    var Point = {
        x: x,
        y: y
        };
    return Point;
}