我为我的网站使用了jqueryui.sortable小部件,但它在移动平台上不起作用。我查看了源代码,看起来像mouse.js
将处理程序绑定到事件。
是否有适用于jQ mobile的mouse.js版本,或者有一种简单的方法可以将jq移动事件(vmousedown,vmousemove,vmouseup)转换为常用鼠标事件,以便jQuery UI小部件接收它们吗?
答案 0 :(得分:1)
你可以在没有太多工作的情况下自己扩展库。
检查设备是否支持触摸很容易:
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)。如果你想支持那些你应该构建一些“非拖放”解决方案。