7

我正在使用 Jquery UI 拖放(http://jqueryui.com/demos/draggable)和https://github.com/furf/jquery-ui-touch-punch 将触摸事件映射到鼠标事件。到目前为止,整个拖放操作都很好。

我现在遇到的问题是我有一个很长的可拖动元素列表,我还需要能够在 iPad 上滚动列表...当我使列表元素可拖动时,这将不再起作用。

我尝试使用 jqueryui 提供的约束,例如distancedelay - 但即使这样,滚动事件似乎也完全被拖动事件禁用/覆盖。

我可能需要编写一个自定义函数,例如“只有向左移动至少 50 px 使其可拖动”之类的。

有没有人遇到过类似的问题并愿意分享一些想法?Sencha 或 JQmobile 等其他移动 Web 框架是否配备了此类功能?

提前致谢...

4

2 回答 2

4

当然,这取决于您的设计,但您可以尝试使用手柄。

这是 jQuery UI 的文档示例:

<div id="draggable" class="ui-widget-content">
    <p class="ui-widget-header">drag with handle</p>
</div>
<div id="draggable2" class="ui-widget-content">
    <p>drag from content</p>
    <p class="ui-widget-header">not drag with handle</p>
</div>

$("#draggable").draggable({handle:"p"});
$("#draggable2").draggable({cancel:"p.ui-widget-header"});

或者至少选项取消可以让你开始。

http://jsfiddle.net/Dn9DX/

于 2012-08-16T13:08:23.827 回答
3

我通过从https://github.com/furf/jquery-ui-touch-punch切换 到此解决方案中的代码解决了这个问题:Javascript Drag and drop for touch devices

最后,我需要调整的只是删除event.preventDefault();以重新启用 scolling。

编辑

基本上我使用了我链接的第二个答案中的代码 - 进行了一些调整。这是我的解决方案的 JS 小提琴,希望对您有所帮助:http: //jsfiddle.net/LQuyr/8/

于 2012-08-17T09:18:30.070 回答