JS:event.touches属性如何工作?
我不明白如何使用event.touches属性。 例如,要获取您应该使用的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
对象(在支持全局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
属性,如上所示(但这只是一个猜测)。