使用jquery mobile中的点击替换所有点击事件以加快速度

我正在使用phonegap和jquery mobile开发移动应用程序。 我用数据角色等创建了布局……在这个应用程序中,我有很多按钮,如下所示,可以转到不同的页面。 (我没有专门将点击事件绑定到这些按钮,他们只是使用href来表示魔法)。

 go to page 6  

这些按钮的问题在于它们非常慢,每1个都在谈论400毫秒的延迟。 是否可以用tap / vclick / touchstart (无论什么是最好的) 替换这些按钮上的所有事件,以便它们立即响应? 他们永远不会处理双击或人们拖延…

谢谢

我写了一个名为Lightning Touch的JS工具来摆脱那种延迟。 这是我展示它(严重)。

该库的基础是Google的fastButtons,它显然已不再可用(或者如果是,URL已更改),但过去在code.google.com的Creative Commons许可下可用。

Lightning Touch触发touchend而不是touchstart,但我怀疑你可以修改它以便在touchstart上工作而不需要太多努力,如果它不适合你的话。

在一次演讲中, 布莱恩·勒鲁克斯 ( Brian Leroux) 对400毫秒延迟问题进行了调查,称“PPL已经解决了这个问题”。 如果Lightning Touch不适用于您的情况,他会链接到您可能会看到的一些项目。 如果那些失败了你,你可以尝试查看他在同一个演示文稿中链接的其他列表 。

希望有一个适合你的解决方案。 (如果Lightning Touch不起作用,我很想知道为什么我可以改进它。)

尝试这个库: quojs它对我来说很完美。

这是一个例子(触摸function非常快)我在这里切换类:

 $$("#man").touch(function(){ switchGender(true); }); $$("#woman").touch(function(){ switchGender(false); }); $$(".next").touch(function(){ nextPage(); }); 

这个小代码应该有所帮助:

 $("a").on("tap",function(e){ $(this).trigger("click"); e.preventDefault(); return false; }); 

把它放入

 $(document).on("ready",function(){ 

瞧!

这个插件将有很大帮助

 $.fn.addTouch = function() { if ($.support.touch) { this.each(function(i,el){ el.addEventListener("touchstart", iPadTouchHandler, false); el.addEventListener("touchmove", iPadTouchHandler, false); el.addEventListener("touchend", iPadTouchHandler, false); el.addEventListener("touchcancel", iPadTouchHandler, false); }); } }; 

http://code.google.com/p/jquery-ui-for-ipad-and-iphone/

此脚本将测试设备是否已启用触摸,然后使用touchend事件替换单击事件。 它为两个链接和JavaScript onclick元素属性添加了触摸事件。 脚本已经在Android,iPhone,iPad和Windows Phone上进行了测试。

 //jQuery doc.ready $(function () { addTouchEvents(); }); addTouchEvents = function() { var isTouchDevice = (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch); if (isTouchDevice) { //replace link clicks with ontouchend events for more responsive UI $("a", "[onclick]").on("touchstart",function(e) { $(this).trigger("click"); e.preventDefault(); return false; }); } }