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

时间:2011-05-25 12:27:45

标签: javascript jquery html css jquery-ui

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

包含jQueryUI后,唯一的javascript是:

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

文档滚动对可拖动div(我认为具有固定位置)具有复合效果。它会导致滚动条逃跑。取出文档滚动,它工作正常,只是没有我想要的页面滚动。

有什么想法吗?

谢谢!

3 个答案:

答案 0 :(得分:5)

以下是错误报告,尚未解决:http://bugs.jqueryui.com/ticket/5009

到目前为止,还没有官方修复的jQuery UI中存在另一个已知错误,修复版计划为1.9版。有几种方法可以解决它,从简单到丑陋的黑客,请查看我在这里的回复:jQuery draggable shows helper in wrong place after page scrolled

答案 1 :(得分:1)

我发现使用拖动功能(触发onmousemove)你可以抵消帮助者的位置。您必须在发布的示例中定位帮助器 - 我想您只需将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上测试过。

干杯

答案 2 :(得分:0)

保持简单。这是我的解决方案,它工作正常。

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