在jScrollPane中将scrollByX和scrollByY分配给jspDrag?

时间:2011-01-21 16:19:51

标签: jquery jscrollpane jquery-jscrollpane

我正在为涉及水平滚动的项目实现jScrollPane。客户希望水平滚动以增量进行,这样用户基本上可以从幻灯片跳转到幻灯片。

我可以使用jScrollPane的API和“scrollByX”在箭头上执行此操作。然而,问题在于滚动条,用户可以单击并来回拖动并滚动内容。

有没有办法将“scrollByX”(或者说就是“scrollByY”)分配给jspDrag,这样当用户拖动滚动条时,滚动不是连续的,而是以递增的方式?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以在任何jsp-scroll-x事件之后监听mouseup事件,并且您可以找出最近项目的位置,并使用jScrollPane API滚动到该元素的位置。我已经更新了您找到的示例,以便它以这种方式工作(正如您之前注意到它只向前滚动):

http://www.jsfiddle.net/dzvSC/14/

(显然这段代码是垂直工作的,但你可以将y改为x's,将top改为left's等)

var api = $('.scroll-pane').jScrollPane().bind(
    'jsp-scroll-y',
    function(event, scrollPositionY, isAtBottom, isAtTop)
    {
        $(document)
            .unbind('mouseup.jsp-demo')
            .bind(
                'mouseup.jsp-demo',
                function()
                {
                    $(document).unbind('mouseup.jsp-demo');
                    var currentY = api.getContentPositionY(),
                        lastY = 0;
                    api.getContentPane().find('>*').each(
                        function()
                        {
                            var thisY = $(this).position().top,
                                destY;
                            if (thisY > currentY) {
                                destY = currentY - lastY > thisY - currentY ? thisY : lastY;
                                api.scrollToY(destY, true);
                                return false;
                            }
                            lastY = thisY;
                        }
                    );
                }
            );
    }
).data('jsp');

原始回答:

可以做你想做的事,我在某处写了一个例子。您可以在jScrollPane mailing list上跟踪它 - 在示例中它是一个垂直滚动窗格,当您释放滚动条时它会动画到最近的图像。实际的例子是在jsfiddle.net上。

我现在急着找不到这个例子,但这可能对你有所帮助。如果你在我下一台电脑前没找到它,我会尝试追踪它并更新这个答案...