使用jquery.hammer.js时如何返回X和Y坐标

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用jquery.hammer.js时如何返回X和Y坐标相关的知识,希望对你有一定的参考价值。

我正在使用jquery.hammer.js编写一个小页面,我在获取触摸事件的x和y坐标时遇到了问题。

我的代码如下:

var x1, y1;
var element = document.getElementById("myDIV")
$(element).hammer().on("touch", function(e){
x1 = e.clientX
y1 = e.clientY

document.getElementById("resultDIV").innerhtml = x1 + " " + y1
}

但我得到的是“未定义的未定义”作为我的结果。

我有我能想到的一切,非常感谢任何帮助。

答案

e.gesture现已弃用。使用最新版本的Hammer.js,您应该使用

var tapX, tapY;
tapX = e.center.x;
tapY = e.center.y;
另一答案
  1. 你最后错过了);
  2. 尽量在每个;的末尾使用分号(statement)。
  3. 如果您开始使用某些库,请先阅读文档和操作方法部分。

您可以从documentation on GitHub找到您想要的信息。

更新: 我已经分析了event对象并找到了这个对象的gesture属性。 gesture包含另一个属性,称为center。最后,您可以使用pageXpageY从此属性中获取X和Y坐标。

var x1, y1;
x1 = e.gesture.center.pageX;
y1 = e.gesture.center.pageY;

以下是JSFiddle中示例的工作演示。

而且如果你使用multi-touch,你可以使用touches属性的gesture数组获得每次触摸的坐标。其他属性名称保持不变(pageX, pageY)。

var x1, y1;
x1 = e.gesture.touches[0].pageX;
y1 = e.gesture.touches[0].pageY;

这是使用second demo数组的示例的touches,仅获取第一次触摸的坐标。

另一答案

我需要调查原始事件以使我的工作。以下是其他具有类似情况的人的示例。

$("#id").hammer({ domEvents: true }).on("press", ".elems", function (e) {
    console.log("pressed");
    console.log(e.originalEvent.gesture.center.x);
    console.log(e.originalEvent.gesture.center.y);
    return false;
});

锤版Hammer.JS - v2.0.4 - 2014-09-28

另一答案

在hammerjs 2.0.8我使用ev.srcEvent.offsetXev.srcEvent.offsetY

以上是关于使用jquery.hammer.js时如何返回X和Y坐标的主要内容,如果未能解决你的问题,请参考以下文章

jquery.hammer.js 在 android 上崩溃,但在 ios 上运行良好

Find() 和 First() 抛出异常,如何改为返回 null?

在鼠标单击方法中,当我调用方法获取 X() 并获取 Y() 时,无论位置如何,它都会返回 -8 [关闭]

当传递给返回Just x的lambda时,Haskell如何知道保留Nothing为什么?

Oracle数据库操作时如何使用LOWER()、UPPER()函数

Python多处理:如何创建x个进程并返回返回值