在iPad Web App上拖放 - 同时保留滚动功能
Drag & Drop on IPad Web App - while remaining Scroll functionality
我正在使用Jquery UI拖放(http://jqueryui.com/demos/draggable)以及 https://github.com/furf/jquery-ui-touch-punch将触摸事件映射到鼠标事件。到目前为止,整个拖放操作运行良好。
我现在遇到的问题是我有一长串可拖动元素,我还需要能够在 iPad 上滚动列表......当我使列表元素可拖动时,这将不再起作用。
我尝试使用 jqueryui 提供的约束,如distance
和delay
- 但即便如此,滚动事件似乎也被完全禁用/与拖动事件重叠。
我可能需要编写一个自定义函数,例如"仅当向左移动至少 50 像素使其可拖动"之类的。
有没有人遇到过类似的问题,并愿意分享对此的想法?是否有其他移动Web框架(如Sencha或JQmobile)配备了这样的功能?
提前感谢...
当然,这取决于您的设计,但您可以尝试使用手柄。
以下是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/
我通过从 https://github.com/furf/jquery-ui-touch-punch 切换来解决这个问题到此解决方案中的代码:Javascript 拖放触摸设备。
最后,我只需要调整event.preventDefault();
以重新启用 scolling。
编辑
基本上,我使用了我链接的第二个答案中的代码 - 进行了一些调整。这是我解决方案的JS小提琴,希望对您有所帮助:http://jsfiddle.net/LQuyr/8/
- 禁用滚动,但保留滚动条CSS
- 在iPad Web App上拖放 - 同时保留滚动功能
- 保留选项后的滚动位置(单击时)
- 删除滚动条,但保留滚动功能
- 如何禁用滚动但保留使用锚链接滚动的功能
- EXT-JS 4.2.1 保留表单 - 面板滚动条的当前位置
- 角度UI网格无限滚动/分页不保留以前的数据
- 溢出:删除元素时,带有子 TABLE 滚动条的 DIV 上的自动滚动条会保留
- 基于鼠标位置的滚动将点击事件保留在前台
- 执行列排序后,dgrid 无法保留滚动位置
- 如何修复页面顶部的导航栏并在页面滚动时将其保留在那里
- 即使在使用javascript重新加载后,也要保留滚动条的位置
- 使用jquery保留滚动条位置
- Angular JS在重新加载后保留滚动位置
- 滚动到锚点,同时保留哈希
- 如何隐藏网页滚动保留滚动功能
- 实现漂亮的滚动条,并保留本地功能
- 通过重定向返回来刷新视图,同时在Rails中保留滚动位置
- 自动HTML页面刷新保留滚动位置,与锚一起工作
- 在保留滚动的同时禁用滚动条