我正在我的 PhoneGap 中的链接上绑定(bind)实时事件应用程序。该事件确实成功触发(通过 alert()
ing 确认),但似乎任何触摸数据都没有像应有的那样附加到事件对象。所有触摸事件都会发生这种情况 - touchstart
、touchmove
和 touchend
。
$('a').live('touchend', function(event) {
event.preventDefault();
alert(event.touches.length); // event.touches should be populated!
});
有什么想法吗?我对 jQuery.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
关于jQuery live() 删除 iPhone 触摸事件属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/671498/