jQuery mobile-对于每个实时点击事件,是否应该有等效的点击事件?
我已将jQuery实时点击事件替换为jQuery移动点击事件以提高响应速度。
我觉得这是出于兼容性原因的一个坏主意。
是否有必要同时拥有这两个事件,有没有办法为同一个函数编写它们?
如(’点击’,’点击’)
比利的答案是非常完整的,并且在我使用它的几次实际上工作得很好。 另外,您可能希望查看JQuery Mobile中的vmouse插件,它试图抽象鼠标事件:
// This plugin is an experiment for abstracting away the touch and mouse // events so that developers don't have to worry about which method of input // the device their document is loaded on supports.
– https://github.com/jquery/jquery-mobile/blob/master/js/vmouse.js
我一直在玩我正在研究的项目,这些天似乎非常敏感。 要使用,例如:
$('selector').bind('vclick', function () { ...
要么
$('selector').bind('vmousedown', function () { ...
您可以在一个调用中绑定多个事件,如下所示:
$('selector').bind('click tap',function(){ ... })
这在某些浏览器/手机中可能没什么问题,但是,这可能会使触发和点击的某些设备上的事件触发两次。
您可以通过执行某种设备/function检测并仅添加适当的处理程序来解决此问题…
$('selector').bind( myCustomDetectionFunction() ? 'click' : 'tap' ,function(){ ... })
此外,我认为touchstart
和mousedown
是更好的选择事件。 这是因为,在触摸之后,点击事件直到延迟已经过去才会触发,因为系统允许第二次触摸的机会使其成为双击或者成为轻扫手势等等。 touchstart
事件会立即触发, mousedown
应该响应更快。
我们开发了一个小脚本来解决这个问题。 只需将其包含在全局级别中,您的点击事件将立即触发,而不会出现延迟事件的任何问题。
似乎jQuery mobile已经有一个事件就是这样:
$(function(){ $('selector').bind('vclick', function(e){ alert('test'); return false; }); });
你可以使用jQuery的vmouse插件。 这将解决点击事件(仅限移动设备)的300毫秒延迟以及触发点击和触摸事件的情况。
要获得vmouse插件,请使用jQuery Mobile Download Builder 。 在jQuery之后但在依赖于此插件的任何脚本之前包含它。
相关事件是vclick ,基本用法如下:
$(".selector").on( "vclick", function( event ) { // To execute });