jQuery live()删除iPhone touch事件属性?

我在我的PhoneGap应用程序中的链接上绑定了现场活动。 该事件成功触发(由alert()确认),但似乎任何触摸数据都没有像应该的那样附加到事件对象。 所有触摸事件touchstart发生这种情况 – touchstarttouchmovetouchend

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

有任何想法吗? 我是使用jQuery.live()的SOL吗?

Events / live目前不支持触摸事件。

从文档:

可能的事件值:click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,keydown,keypress,keyup

目前不支持:模糊,焦点,鼠标中心,鼠标离开,更改,提交

您可能需要考虑尝试使用click来满足您的需求,或者您可以切换到使用livequery ,它可能会支持它。 (livequery是live最初的基础,我不确定为什么它不支持所有相同的事件)

实际上,您可以使用.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