jQuery UI的可拖动位置是否受到scrollTop的影响?(包括JSFiddle)

jQuery UI draggable position being affected by scrollTop? (JSFiddle Included)

本文关键字:影响 JSFiddle scrollTop 包括 UI 拖动 位置 jQuery 是否      更新时间:2023-09-26

http://jsfiddle.net/mgJf2/2/

在包含jQueryUI之后,唯一的javascript是:

$("#scrollbox").draggable({
    axis: 'y',
    drag: function(event, ui) {
         $(document).scrollTop(ui.position.top);
    },
});

文档滚动对可拖动的div(我认为它有一个固定的位置)有复合效果。它会导致滚动消失。去掉文档滚动,它工作得很好,只是没有我想要的页面滚动。

有什么想法吗?

谢谢!

这是错误报告,还没有修复:http://bugs.jqueryui.com/ticket/5009

jQuery UI中还有另一个已知的错误,到目前为止还没有正式修复,修复计划为1.9版本。有几种方法可以解决这个问题,从简单到丑陋的破解,请查看我在这里的回应:jQuery draggable在页面滚动后将助手显示在错误的位置

我发现使用拖动时的函数(激发onmousemove)可以偏移辅助对象的位置。在发布的示例中,你必须以helper为目标——我想你只需要用ui.item代替ui.helper

drag: function(event, ui) { 
    var offset = $(this).offset();
    var yPos = offset.top; 
    ui.helper.css('margin-top', $(window).scrollTop() + 'px');
}

这应该可以修复在Chrome和Safari中滚动文档时的位置。Mozilla是唯一一个在没有此修复程序的情况下正常工作的浏览器。尚未在IE.上进行测试

干杯

保持简单。这是我的解决方案,效果很好。

drag: function(event, ui) { 
    ui.helper.css('margin-top', -(t-c.scrollTop()));
},
start: function( event, ui ) {
    t = c.scrollTop();
},