我的jquery UI draggable工作得很好,除非我尝试在屏幕外拖动某些东西,导致屏幕滚动。然后,所选项目跳转到谁知道哪里 - 你再也看不到了。有谁知道我怎么解决这个问题?谢谢。
现在我们正在使用jquery-ui-1.8.24和jquery-1.8.2
答案 0 :(得分:1)
请注意,appendTo
的元素样式应为position: relative
使用jQuery-ui时draggable
答案 1 :(得分:1)
在用jQuery找不到解决方案之后,我实现了自己的拖拽 - 对我有用。 它还允许我删除jQuery UI,这很棒。 请注意,draggable和handle是jquery元素,limit是一个对象。 这是代码 -
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);
}
}
答案 2 :(得分:0)