[javascript] 클릭 이벤트와 마찬가지로 ‘touchstart’이벤트에 대해 e.PageX 위치에 해당하는 것이 있습니까?

라이브 기능과 함께 사용되는 touchstart 이벤트의 jQuery로 X 위치를 얻으려고 해요?

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

이제 이것은 이벤트로 ‘클릭’으로 작동합니다. 어떻게 ( 알파 jQuery Mobile 을 사용하지 않고 ) 터치 이벤트로 얻을 수 있습니까?

어떤 아이디어?

도움을 주셔서 감사합니다.



답변

약간 늦었지만 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;
});


답변

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}
})

이것이 당신에게 유용하기를 바랍니다;)


답변

여기에 다른 답변 중 일부를 시도했지만 originalEvent도 정의되지 않았습니다. 검사 후 TouchList 클래스 속성 (다른 포스터에서 제안한대로)을 발견하고 다음과 같은 방법으로 pageX / Y에 도달했습니다.

var x = e.changedTouches[0].pageX;


답변

jQuery를 사용하지 않는 경우 … 등을 TouchList가진 Touch객체 를 얻으려면 이벤트 중 하나에 액세스해야합니다 pageX/Y clientX/Y.

다음은 관련 문서에 대한 링크입니다.

e.targetTouches[0].pageX제 경우에 사용 하고 있습니다.


답변

Touch 클래스에 대한 Safari 개발자 참조를 확인하십시오 .

이에 따르면 pageX / Y를 사용할 수 있어야합니다. 맞춤법을 검사해야할까요? 확실히 그건 확인 pageX하지PageX


답변