当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


JQuery Mobile vclick用法及代码示例


vclick event

添加的版本:1.0

说明:虚拟化点击事件处理程序。

  • jQuery( ".selector" ).on( "vclick", function( event ) { ... } )

我们提供了一组"virtual" 鼠标事件,它们试图抽象出鼠标和触摸事件。这允许开发人员为基本鼠标事件注册侦听器,例如 mousedown、mousemove、mouseup 和 click,并且插件将负责在幕后注册正确的侦听器,以便在尽可能快的时间内为该设备调用侦听器.在触摸环境中,该插件保留了在传统鼠标环境中看到的事件触发顺序,例如,vmouseup 总是在 vmousedown 之前调度,vmousedown 在 vclick 之前调度,等等。虚拟鼠标事件还规范了坐标信息的提取方式事件,因此在基于触摸的环境中,可以直接在事件对象上从 pageX、pageY、screenX、screenY、clientX 和 clientY 属性中获得坐标。

jQuery Mobile "vclick" 事件处理程序模拟移动设备上的"onclick" 事件处理程序。

这个插件扩展了 jQuery 的内置方法。如果没有加载 jQuery Mobile,调用 .vclick() 方法可能不会直接失败,因为该方法仍然存在。但是,不会发生预期的行为。

$( document ).on( "vclick", "p", function() {
  $( this ).append( "<span style='color:#108040;'> vclick fired... </span>" );
  });

效果演示

警告:谨慎使用 vclick

在触摸设备上谨慎使用 vclick。基于 Webkit 的浏览器在 touchend 事件被调度后大约 300 毫秒合成 mousedownmouseupclick 事件。合成鼠标事件的目标是在它们被调度时计算的,并且基于触摸事件的位置,在某些情况下,实现特定的启发式方法会导致不同设备甚至不同操作系统版本上的不同目标计算相同的设备。这意味着原始触摸事件中的目标元素可能与合成鼠标事件中的目标元素不同。

我们建议使用click 而不是vclick,只要触发的操作有可能更改屏幕上触摸点下方的内容。这包括页面转换和其他行为,例如可能导致屏幕移动或内容被完全替换的折叠/展开。

取消元素的默认点击行为

应用程序可以在 vclick 事件上调用 preventDefault() 以取消元素的默认单击行为。在基于鼠标的设备上,对vclick 事件调用preventDefault() 等同于在气泡事件阶段对真实click 事件调用preventDefault()。在基于触摸的设备上,它有点复杂,因为实际的 click 事件在 vclick 事件被调度后大约 300 毫秒被调度。对于触摸设备,在 vclick 事件上调用 preventDefault() 会触发 vmouse 插件中的一些代码,该代码会在捕获事件阶段尝试捕获由浏览器调度的下一个 click 事件,并调用 preventDefault()stopPropagation() 就可以了。正如上面警告中提到的,有时很难将触摸事件与其相应的鼠标事件匹配,因为目标可能不同。出于这个原因,vmouse 插件也回退到尝试通过坐标识别相应的click 事件。仍然存在目标和坐标识别都失败的情况,这会导致 click 事件被调度并触发元素的默认操作,或者在内容已被移动或替换的情况下,触发不同的点击元素。如果给定元素/控件经常发生这种情况,我们建议您使用click 来触发您的操作。

也可以配置虚拟鼠标事件:

  • $.vmouse.moveDistanceThreshold (default: 10px) - 超过这个,那就是一个滚动事件。调用 vmousecancel 事件并取消 TouchMove 事件。
  • $.vmouse.clickDistanceThreshold(默认值:10px)- 如果 vclick 事件已被捕获并且在阻止列表中,则忽略小于此距离的 vclick。
  • $.vmouse.resetTimerDuration (default: 1500ms) - 比这更多的时间,那么它不是一个触摸事件。滚动,TouchMove 和 TouchEnd 事件使用它。阻止列表被清除。

相关用法


注:本文由纯净天空筛选整理自jquerymobile.com大神的英文原创作品 vclick。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。