jquery UI可拖动屏幕滚动跳转
我的jQueryUIDragable工作得很好,除非我试图将某些内容拖离屏幕,导致屏幕滚动。然后选定的项目跳转到谁知道在哪里-你再也看不到它了。有人知道我如何解决这个问题吗?多谢各位 现在我们在jquery-ui-1.8.24和jquery-1.8.2上 如果您在jquery UI可拖动屏幕滚动跳转,jquery,jquery-ui,internet-explorer,Jquery,Jquery Ui,Internet Explorer,我的jQueryUIDragable工作得很好,除非我试图将某些内容拖离屏幕,导致屏幕滚动。然后选定的项目跳转到谁知道在哪里-你再也看不到它了。有人知道我如何解决这个问题吗?多谢各位 现在我们在jquery-ui-1.8.24和jquery-1.8.2上 如果您在body元素上设置了overflow属性,这个问题就会消失。不知道为什么 body { overflow: auto; } 请注意,当使用jQuery uidraggable时,appendTo的元素样式应该是position
body
元素上设置了overflow属性,这个问题就会消失。不知道为什么
body {
overflow: auto;
}
请注意,当使用jQuery ui
draggable
时,appendTo
的元素样式应该是position:relative
,在使用jQuery找不到解决方案后,我实现了我自己的拖动-对我来说很好。
它还允许我删除jQueryUI,这非常棒。
请注意,draggable和handle是jquery元素,而limits是一个对象。
这是代码-
function initializeDrag(draggable, handle, limits) {
var initialMousePosition, initialDraggablePosition;
handle.on('mousedown', function (e) {
initialMousePosition = {
x: e.pageX,
y: e.pageY
};
initialDraggablePosition = {
top: parseInt(draggable.css('top'), 10),
left: parseInt(draggable.css('left'), 10)
}
document.addEventListener('mousemove', onMouseMove);
document.addEventListener('mouseup', onMouseUp);
});
function onMouseMove(e) {
var verticalDelta = e.pageY - initialMousePosition.y;
var horizontalDelta = e.pageX - initialMousePosition.x;
var topRes = initialDraggablePosition.top + verticalDelta;
var leftRes = initialDraggablePosition.left + horizontalDelta;
topRes = Math.max(topRes, limits.top);
topRes = Math.min(topRes, limits.bottom);
leftRes = Math.max(leftRes, limits.left);
leftRes = Math.min(leftRes, limits.right);
draggable.css({
top: topRes + 'px',
left: leftRes + 'px'
});
}
function onMouseUp() {
document.removeEventListener('mousemove', onMouseMove);
document.removeEventListener('mouseup', onMouseUp);
}
}
面向对象,并将JSFIDLE设置为jQuery1.8.3/jQueryUI1.9.2。当主体css被移除时,问题再次出现,我认为这已经足够接近了