2017-06-03 115 views
1

我正在尝试创建可重新排序的项目列表。我已经在移动设备上进行了设置,该项目在长时间搁置后开始移动,然后拖动以重新放置它。拖动移动时禁用滚动

当只有几个项目都存在它工作正常,但一旦足够的出现,让div滚动(只含ul滚动,而不是整个页面的div),我不能再重新定位的项目,如拖导致滚动。

我曾尝试在touchmove上使用.preventDefault(),但似乎没有效果。

基本上,我有这样的:

$(document).on('touchmove mousemove', e => { 
    // check to make sure we're holding something 
    // if not, just return 

    e.preventDefault() 
    // this stops the text from being highlighted, 
    // but does not stop scrolling 

    // report the mouse/touch position to the actual move function. 
}) 

大多数解决方案可以说使用preventDefault()停止它,但不会出现这种情况。

我能在这里做什么?

编辑:我已经尝试过操纵overflow属性,但是这样可以防止div以编程方式滚动以及它需要执行的操作。

+0

你可以尝试操纵溢出样式属性 – Sombriks

+1

@Sombriks我想这一点,但似乎完全停止到div元素之外的任何访问。我需要它滚动时,持有的项目接近顶部/底部(我可以处理程序),但溢出停止。编辑提出的原始问题。 – NukesForKids

+0

在这种情况下,我假设mousemove事件正在被滚动事件“吃掉”。如果是这样,也许一个下降事件可能会有所帮助:https://developer.mozilla.org/en-US/docs/Web/Events/drop – Sombriks

回答

0

尽量避免滚动:

$('div').on('scroll', function(e) {e.preventDefault()}); 
+0

没有。这看起来不会停止滚动。 – NukesForKids

+0

可能div和body都滚动?您能否在codepen或smth中添加代码示例? –