라이브 기능과 함께 사용되는 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
.
다음은 관련 문서에 대한 링크입니다.
- https://developer.mozilla.org/en-US/docs/Web/Events/touchstart
- https://developer.mozilla.org/en-US/docs/Web/API/TouchList
- https://developer.mozilla.org/en-US/docs/Web/API/Touch
e.targetTouches[0].pageX
제 경우에 사용 하고 있습니다.
답변
Touch 클래스에 대한 Safari 개발자 참조를 확인하십시오 .
이에 따르면 pageX / Y를 사용할 수 있어야합니다. 맞춤법을 검사해야할까요? 확실히 그건 확인 pageX
하지PageX