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

标签 jquery iphone touch live

我正在我的 PhoneGap 中的链接上绑定(bind)实时事件应用程序。该事件确实成功触发(通过 alert()ing 确认),但似乎任何触摸数据都没有像应有的那样附加到事件对象。所有触摸事件都会发生这种情况 - touchstarttouchmovetouchend

$('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/

相关文章:

ios - UINavigationBar 为 UIScrollView 注册触摸

javascript - Jquery 移动和鼠标悬停事件

javascript - 请求的资源上不存在 'Access-Control-Allow-Origin' header 。响应的 HTTP 状态代码为 405

javascript - 如何使页面内容重新调整为iframe大小

jquery - '全选'和 'remove all' 与 selected.js

jquery - 循环遍历表单字段并显示该表单中除隐藏字段之外的所有表单字段

iphone - iOs (cocos2d) 屏幕截图缓存或 CCRenderTexture 缓冲区?它没有改变

linux - grep/touch -mtime 检查最近 XX 分钟内的日志

iphone - iPhone 上带有白色文本和清晰背景的放大镜放大倍率

iphone - 如何在 xcode4 的界面生成器中设置 View 的辅助功能标签?