jQuery live()删除iPhone touch事件属性?
我在我的PhoneGap应用程序中的链接上绑定了现场活动。 该事件成功触发(由alert()
确认),但似乎任何触摸数据都没有像应该的那样附加到事件对象。 所有触摸事件touchstart
发生这种情况 – touchstart
, touchmove
和touchend
。
$('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