如何让jQueryUI拖放工作与触摸设备

时间:2012-12-18 19:50:48

标签: jquery jquery-ui jquery-ui-draggable jquery-ui-droppable

这是一种情况,我希望有人回复告诉我,我是个白痴。但我仍然惊讶于jQueryUI drag \ drop不适用于触控设备。我没有测试过它们,但我去年曾尝试过iphone \ ipad \ android 2,3和4而且没什么。刚在新的Android上试过最新版本。依然没有。不要相信我,只需访问移动设备上的演示页面并尝试使用drag \ drop示例。什么都没有。

这里有技术问题或核心不兼容吗?一个修复如此简单,不值得写? jQuery开发人员不使用移动设备吗?我已经看到Stack Overflow附近发布了“修复”,但它们都是“黑客”,所有我试过的都不起作用。

我很困惑。有人能解释一下这个问题吗?

3 个答案:

答案 0 :(得分:67)

如果您只是希望当前的jQuery UI代码与触摸事件一起使用,则可以使用jQuery UI Touch Punch monkey补丁。

唯一的“技术问题或核心不兼容性”是jQuery UI (1.x)仅侦听鼠标事件,而不是触摸事件(请参阅@ ScottGonzales的回复了解历史原因)。上面的jQuery touch punch实现了这一改变。您甚至可以在该页面上尝试一些jQuery UI示例,它们可以正常工作。通常,使用Touch Punch是目前公认的解决方案。

答案 1 :(得分:30)

为什么jQuery UI不支持触摸设备有很长的历史,但它归结为Touch Event是一个非标准的WebKit特定实现。当时,未来看起来很沉闷。苹果拥有的专利没有人想要接近;因此,Mozilla实施了他们自己的触摸事件系统,其流程从未流行过。目前尚不清楚微软和Opera会做什么。 Paul Bakaus(jQuery UI的创建者)wanted to land iPhone support 4 years ago。我想等待官方标准。

时间过去了,Mozilla放弃了触摸事件,微软实现了自己的指针事件系统。 W3C组建了一个工作组,以标准化Touch事件并调查Apple专利。触摸事件工作组已发布推荐并解散。微软最终提交了一个标准化指针事件的提议,现在有一个W3C指针事件工作组。

我们目前正在处理所有jQuery UI交互的device-agnostic rewrite,这些交互将成为jQuery UI 2.0的一部分。在此之前,您可以使用jQuery UI Touch Punch

今年早些时候,我写了一些关于触摸事件的历史,以及为什么Pointer Events提供了更好的未来。您可以在jQuery blog上阅读相关内容。

答案 2 :(得分:0)

查看jQTouch

它是一个jQuery插件,有助于弥合桌面和触摸设备之间的事件差距。