为了跨浏览器兼容并避免奇怪的行为,我建议使用所有JQueryUI 可拖动回调。
几天前我读到最后一个版本的 Chrome 在原生 HTML5 可拖动事件方面存在一些非常棘手的问题。
例如,我刚刚检查了您的网页源代码并且您正在使用$('.drag-handle').on('drag', function(){...});
=> 您应该使用拖动回调。
在您的情况下,我还建议不要window
用作可滚动容器。您应该创建一个div
来包装所有表格内容并将其用作滚动容器。我过去已经完成了这个实现并且它正在工作。
不要忘记在containment
创建可拖动小部件期间在选项中设置包装器 ID。
如果它总是不起作用,您还可以尝试覆盖drag
回调中的辅助位置:
//Save the mouse position in global variables
$(document).mousemove(function(e){
window.mouseXPos = e.pageX;
window.mouseYPos = e.pageY;
});
$('[id^="drag-"]').each(function() {
$(this).draggable({
opacity: 0.7,
cursorAt: { top: 15, left: 50 },
scroll: true,
stop: function(){},
drag : function(e,ui){
//Force the helper position
ui.position.left = window.mouseXPos - $(this).draggable('option','cursorAt').left;
ui.position.top = window.mouseYPos- $(this).draggable('option','cursorAt').top;
});
});