对于“touchstart”事件,是否有与 e.PageX 位置等效的位置,就像对于点击事件一样?

2022-08-30 05:39:44

我正在尝试使用触摸启动事件的jQuery获取X位置,与实时函数一起使用?

$('#box').live('touchstart', function(e) { var xPos = e.PageX; } );

现在,这确实适用于“点击”作为事件。我到底如何(不使用alpha jQuery Mobile)通过触摸事件获得它?

有什么想法吗?

感谢您的任何帮助。


答案 1

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

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

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

更新的JQUERY:

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

答案 2

我把这个简单的函数用于基于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;
    };

例:

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

希望这对您有用;)