JQuery Live () iPhone 터치 이벤트 속성 제거?
문제
나는 내 링크에 라이브 이벤트를 묶고 있습니다 전화기 앱. 이벤트는 성공적으로 발사됩니다 (확인 alert()
ing), 그러나 어떤 터치 데이터가 이벤트 객체에 첨부되지 않은 것 같습니다. 이것은 모든 터치 이벤트에서 발생합니다. touchstart
, touchmove
, 그리고 touchend
.
$('a').live('touchend', function(event) {
event.preventDefault();
alert(event.touches.length); // event.touches should be populated!
});
어떤 아이디어? jquery.live ()가있는 솔이 있습니까?
해결책
터치 이벤트는 현재 지원되지 않습니다 이벤트/라이브.
문서에서 :
가능한 이벤트 값 : 클릭, DBLCLICK, MOUSEDOWN, MOUSEUP, MOUSEMOVE, MouseOver, MouseOut, KeyDown, Keypress, KeyUp
현재 지원되지 않음 : Blur, Focus, Mouseenter, Mouseleave, 변경, 제출
필요에 맞는 경우 클릭을 사용하려고 시도하거나 사용으로 전환 할 수 있습니다. 라이브 퀴리, 아마도 그것을 지원할 것입니다. (LiveQuery는 원래 Live가 원래 기반으로 한 것이 무엇인지 잘 모르겠습니다. 왜 그것이 동일한 이벤트를 모두 지원하지 않는지 잘 모르겠습니다)
다른 팁
실제로 .live 메소드를 사용할 수 있습니다. jQuery가 내부적으로 이벤트를 처리하는 방식으로 인해 이벤트가 없습니다. 이벤트를 "고정"하기 위해 jQuery는 이벤트를 클론합니다. 그렇게하면 성능의 이유로 제한된 수의 속성에 대해서만 복사합니다. 그러나 이벤트를 통해 원래 이벤트 객체에 여전히 액세스 할 수 있습니다.
따라서 예제 코드는 다음과 같아야합니다.
$('a').live('touchend', function(event) {
event.preventDefault();
console.log(event.originalEvent.touches.length);
});
다음은 복사 된 속성입니다. http://github.com/jquery/jquery/blob/master/src/event.js#l411