是否存在与'touchstart'事件相同的e.PageX位置,因为有点击事件?

wax*_*cal 102 javascript jquery events click touch

我试图用一个touchstart事件的jQuery获得X位置,与live函数一起使用?

$('#box').live('touchstart', function(e) { var xPos = e.PageX; } );
Run Code Online (Sandbox Code Playgroud)

现在,这可以使用'click'作为事件.如何(不使用alpha jQuery Mobile)我是否通过触摸事件获得它?

有任何想法吗?

谢谢你的帮助.

mko*_*nen 177

有点迟到,但你需要访问原始事件,而不是jQuery按摩一个.此外,由于这些是多点触控事件,因此需要进行其他更改:

$('#box').live('touchstart', function(e) {
  var xPos = e.originalEvent.touches[0].pageX;
});
Run Code Online (Sandbox Code Playgroud)

如果你想要其他手指,你可以在触摸列表的其他索引中找到它们.

更新的JQUERY更新:

$(document).on('touchstart', '#box', function(e) {
  var xPos = e.originalEvent.touches[0].pageX;
});
Run Code Online (Sandbox Code Playgroud)


Ned*_*udi 42

我将这个简单的函数用于基于JQuery的项目

    var pointerEventToXY = function(e){
      var out = {x:0, y:0};
      if(e.type == 'touchstart' || e.type == 'touchmove' || e.type == 'touchend' || e.type == 'touchcancel'){
        var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
        out.x = touch.pageX;
        out.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') {
        out.x = e.pageX;
        out.y = e.pageY;
      }
      return out;
    };
Run Code Online (Sandbox Code Playgroud)

例:

$('a').on('mousedown touchstart', function(e){
  console.log(pointerEventToXY(e)); // will return obj ..kind of {x:20,y:40}
})
Run Code Online (Sandbox Code Playgroud)

希望这对你有用;)

  • 无需检查事件类型,因为触摸事件将不会定义e.pageX.只需要`out.x = e.pageX || e.originalEvent.touches [0] .pageX;` (13认同)

mat*_*ley 13

我在这里尝试了其他一些答案,但originalEvent也未定义.经过检查,找到了一个TouchList分类属性(由另一张海报建议)并设法以这种方式到达pageX/Y:

var x = e.changedTouches[0].pageX;
Run Code Online (Sandbox Code Playgroud)

  • 这适用于所有基于JavaScript的代码.螺丝jquery (4认同)
  • 我的救星!即使对于touchmove()也可以完美工作。 (2认同)

Sco*_*rth 6

如果您没有使用jQuery ...您需要访问其中一个事件TouchList来获取Touch具有pageX/Y clientX/Y等等的对象.

以下是相关文档的链接:

我在使用e.targetTouches[0].pageX我的情况.