【问题标题】:JS: How does event.touches property work?JS: event.touches 属性是如何工作的?
【发布时间】:2011-12-19 09:57:32
【问题描述】:

我不明白如何使用 event.touches 属性。例如,要获取 iPad/iPhone 上的手指数,您应该使用

event.touches.length

那为什么这个示例代码不起作用?

$('.image').bind('touchstart', function(event) {
  alert(event.touches.length);
});

但这是有效的:

$('.image').bind('touchstart', function() {
  alert(event.touches.length);
});

不应该反过来吗?

【问题讨论】:

    标签: javascript jquery ios ipad touches


    【解决方案1】:

    在第二种情况下,您将使用浏览器的全局(和原始)event 对象,而不是特定于 jQuery 的对象(在支持全局 event 的浏览器上,并非所有人都这样做 - Firefox 没有' t,例如——因为它是微软的东西,只有其他人抄袭)。

    听起来 jQuery 没有在其自定义事件对象中传递 touches 属性。如event object's documentation 中所述,您可以在第一个示例中使用event.originalEvent 来访问它所具有的“特殊属性”,同时仍然可以获得jQuery 规范化事件对象的好处,例如:

    $('.image').bind('touchstart', function(event) {
      alert(event.originalEvent.touches.length);
    });
    

    ...或者你可以告诉 jQuery 复制该属性,方法是在脚本开头执行一次:

    jQuery.event.props.push("touches");
    

    ...您的第一个示例应该开始工作了。


    旁注:如果你没有使用jQuery Touch,你可以看看它。我的猜测是,除了它所做的其他事情之外,它还添加了touches 属性,如上所示(但这只是一个猜测)。

    【讨论】:

    • 非常感谢!!现在我明白了,它正在工作。顺便说一句,我使用的是 jQTouch,所以显然它没有添加 touches 属性。
    • @Tina:很高兴有帮助。哇,jQTouch 没有添加它真是令人惊讶!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 2023-03-31
    • 2011-02-10
    相关资源
    最近更新 更多