我在我的网站上使用了 jqueryui.sortable 小部件,但它在移动平台上不起作用。我查看了源代码,看起来是 mouse.js
将处理程序绑定(bind)到事件。
是否有适用于 jQ mobile 的 mouse.js 版本,或者是否有一种简单的方法可以将 jq mobile 事件(vmousedown、vmousemove、vmouseup)转换为常用的鼠标事件,以便 jQuery UI 小部件接收它们?
最佳答案
您可能可以自己扩展该库,而无需做太多工作。
检查设备是否支持触摸很容易:
var supportTouch = ("ontouchend" in document);
然后您可以根据是否启用触摸来使用适当的事件,以下是在 jQuery mobiles 库中使用的:
var touchStartEvent = supportTouch ? "touchstart" : "mousedown",
touchStopEvent = supportTouch ? "touchend" : "mouseup",
touchMoveEvent = supportTouch ? "touchmove" : "mousemove";
然后您更改库以使用这些变量而不是当前的硬编码鼠标事件,可能看起来像这样:
$(".sortable").bind("mousedown", doSomething());
但应该看起来像这样:
$(".sortable").bind(touchStartEvent, doSomething());
在做太多工作之前先做一些测试,我没有测试上面的代码,也没有查看可排序库。
另一个注意事项是,某些移动设备不支持在浏览器中拖动对象,我知道的是 Windows Phone 7(带和不带 Mango 的)。如果您想支持这些,您应该构建一些“非拖放”解决方案。
关于jquery - 是否有适用于 jQuery Mobile 的 jqueryUi.mouse.js 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7504379/