JS:事件如何?触摸属性工作

JS: How does event.touches property work?

本文关键字:触摸 属性 工作 事件 JS      更新时间:2023-09-26

我不明白如何使用事件。触动产权。例如,要获得iPad/iPhone上的手指数,你应该使用

event.touches.length

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

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

但这是工作:

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

难道不应该反过来吗?

在第二种情况下,您将退回到浏览器的全局(和原始)event对象,而不是特定于jquery的对象(在支持全局event的浏览器上,并非所有浏览器都支持) —例如,Firefox就没有这样的功能 因为这是微软的东西,只有一些其他公司复制了)。

这听起来像jQuery没有传递touches属性在其自定义事件对象。正如在事件对象的文档中所描述的,你可以在你的第一个例子中使用event.originalEvent来访问它所具有的"特殊属性",同时仍然获得jQuery规范化事件对象的好处,例如:

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

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

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

…因此,您的第一个示例应该开始工作。


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