JqueryUI,将元素拖动到包含大表的滚动可放置div的单元格中

我正面临拖放问题。

我想要总是看到拖动的元素,我想能够滚动一个特定的div来删除我的表的任何单元格中的元素。 我也希望能够将元素从任何div拖动到任何div。

这个例子几乎没用。 我的最后一个问题是关于单元格hoverClass属性:当我从“容器B”的边框附近的“容器A”中拖动一个元素时,我实现了一个自动滚动行为以在我的表中导航以到达任何单元格。 但是,在滚动模拟之后, hoverClass不适用于正确的单元格。 但是,元素总是被放入正确的单元格中。

https://jsfiddle.net/Bouillou/QvRjL/434/

我的方法是否正确?

编辑

我找到了解决方法。 我们的想法是在帮助器构造回调期间将元素clone附加到可滚动容器,然后在1ms后使用setTimeout函数将帮助器附加到body。 辅助位置必须映射到鼠标位置以避免偏移问题。

这是我的最终解决方案: https : //jsfiddle.net/Bouillou/QvRjL/434/

我相信有可能开发出最佳方法。

显然我的更新是唯一的解决方案。

它现在正在工作几个月没有问题。

我找到了解决方法。 我们的想法是在helper构造回调期间将元素clone附加到可滚动容器,然后在1ms后使用setTimeout函数将帮助器附加到body。 辅助位置必须映射到鼠标位置以避免偏移问题。

这是我的解决方案: http : //jsfiddle.net/QvRjL/134/

 $('[id^="drag-"]').each(function() { $(this).draggable({ opacity: 0.7, cursorAt: { top: 15, left: 50 }, appendTo: 'body', containment: 'body', scroll: true, helper: function(){ //Hack to append the cartridge to the body (visible above others divs), //but still bellonging to the scrollable container $('#container').append('
' + $(this).html() + '
'); $("#clone").hide(); setTimeout(function(){ $('#clone').appendTo('body'); $("#clone").show(); },1); return $("#clone"); } }); });​

如果我没有正确理解,滚动后,highlitedcells不是正确的..

在我看来,它计算要从容器元素突出显示的单元格,然后在表格元素内复制de position。

基本上,它会检查鼠标与’container2’之间的偏移量,然后在偏移量处从单元格开始,但是从表格’t’位置开始。

抓住机会并使用位置而不是偏移。 并在http://api.jquery.com/offset/上提到,

.offset()方法允许我们检索元素相对于文档的当前位置。 将此与.position()进行对比,该位置检索相对于偏移父项的当前位置。

Personnaly我只是将css类应用于单元格并使用css:hover。 /编辑:如果您需要这样做的唯一原因是突出显示单元格…也许您也想要触发其他一些东西。