我正在使用jsTree在几个树视图之间拖放项目.这适用于PC,但不适用于平板电脑(Apple和
Android).我知道JQueryUI没有内置的DnD支持平板电脑,我已经尝试了几个可用的调整,但没有一个工作.
是否有可能在平板电脑上使用jsTree拖放?
谢谢!
最佳答案 我已经连续几天探索这个问题了,专注于获取一个使用jsTree在iPad上工作的现有Web应用程序.使用jquery.ui.touch.js我可以在那里获得大部分内容.触摸事件可以映射到jstree期望的鼠标事件,并且树将允许我拖动,但是永远不会识别放置目标,实际上从不调用drop_check函数.所以它并不完全存在.
我想这可能是因为只有一些触摸事件可以映射到像jquery.ui.touch.js这样的鼠标事件:touchstart = mousedown,touchmove = mousemove,touchend = mouseup.但是,jstree还依赖于mouseenter和mouseleave进行drop target检查,而且我没有这样的事件.已经讨论过touchenter和touchleave,但我不认为iPad上的Safari浏览器会触发这一点.我一直在考虑通过查看坐标并检查重叠来尝试从touchmove事件生成mouseenter和mouseleave事件,但我还没有尝试过.
更新:2012年5月18日.我认为它现在正在运作.有几件事与我想的不同.最大的突破是当我意识到触摸事件目标元素永远不会从触摸启动,通过所有触摸移动到触摸.但是,mousemove事件期望获取事件的元素是您要移动的元素.所以我更改了插件,将mousemove事件发送到touchmove事件坐标处的元素,它就像一个冠军.事实证明,一旦我这样做,我就不再需要手动触发mouseenter和mouseleave事件,因为jQuery会处理这些事件.
右键单击上下文菜单(在触摸屏上)在我的简单测试器应用程序中工作,但在我的Web应用程序中没有,直到我在上下文菜单事件后在右键上添加模拟鼠标事件.
我的jquery.ui.touch.js的修改版本已在此处上传:
http://code.google.com/p/jquery-ui-for-ipad-and-iphone/issues/detail?id=18