6

PhoneGapアプリのリンクにライブ イベントをバインドしています。イベントは正常に発生しますが ( alert()ing で確認)、タッチ データがイベント オブジェクトに添付されていないようです。touchstartこれは、 、touchmove、およびのすべてのタッチ イベントで発生しますtouchend

$('a').live('touchend', function(event) {
  event.preventDefault();
  alert(event.touches.length); // event.touches should be populated!
});

何か案は?私は jQuery.live() で SOL ですか?

4

2 に答える 2

16

実際には、.live メソッドを使用できます。jQuery が内部でイベントを処理する方法のため、event.touches プロパティはありません。イベントを「修正」するために、jQuery はイベントを複製します。その際、パフォーマンス上の理由から、限られた数のプロパティのみをコピーします。ただし、event.originalEvent プロパティを介して元のイベント オブジェクトにアクセスすることはできます。

したがって、サンプル コードは次のようにする必要があります。

$('a').live('touchend', function(event) {
  event.preventDefault();
  console.log(event.originalEvent.touches.length);
});

コピーされるプロパティは次のとおりです: http://github.com/jquery/jquery/blob/master/src/event.js#L411

于 2010-01-30T21:02:49.007 に答える