2

我正在使用 jquery 库 jScrollPane 为整个页面设置自定义滚动条。

scroll_bar = $('body>div').jScrollPane(
     {
        autoReinitialise: true,
            showArrows: true,
            maintainPosition: false
     }).data('jsp');

在页面底部添加新内容时(当用户位于页面底部时),我调用:

scroll_bar.getContentPane().find(".content").append(some_content);
scroll_bar.reinitialise();

这会重新初始化滚动条,但会将用户带到页面顶部。我希望窗口保持在同一个位置。有什么解决办法吗?

4

4 回答 4

0

对于在上述操作后重新初始化有问题的人:

function reinitialiseScrollpane() {

        var settings = {
            maintainPosition: true,
            // add your settings here, below are examples
            arrowButtonSpeed: 1,
            showArrows: true,
            animateScroll: true 
        };

    pane.jScrollPane(settings); 
    var api = pane.data('jsp');
    api.getContentPane().append();
    api.reinitialise();

}

重要的部分是使用设置。如果不重新初始化设置,它可能会出现故障。我已经把它放在一个函数调用中,所以只要你的任何滚动窗格中的内容发生更改,你只需调用它(假设你保留了所有区域的 .scroll-pane 类)

于 2014-06-07T12:31:12.757 回答
0

你确定你得到了需要的数据吗,我不知道这是否有效,但你有没有试过:

scroll_bar = $('body>div').jScrollPane(
   {
      autoReinitialise: true,
          showArrows: true,
          maintainPosition: false
   });

scroll_bar.data('jsp');

您通常不会为此使用 .scroll-pane 类,而不是 body>div 选择器吗?

我想也许它应该是这样的:

var api = scroll_bar.data('jsp');
api.reinitialise();
于 2011-12-04T20:42:18.523 回答
0

如果你想让滚动条保持它的位置,你应该设置

      maintainPosition: true

另外,尝试像这样重构代码:

            // Use jscrollpane api function to enable reinitialization
            var scrollelement = $('body>div').jScrollPane({ maintainPosition: true});
            var api = scrollelement.data('jsp');
            api.getContentPane().html(result);


            // Needed to apply jscrollpane after change new container type
            api.reinitialise();

希望这有帮助:)

于 2011-12-04T22:36:30.933 回答
0

文档

  • maintainPosition [boolean] - 是否希望滚动窗格的内容在重新初始化时保持其位置 - 因此在添加更多内容时它不会滚动(默认为 true)

您将其设置为false.

于 2011-12-04T22:37:07.297 回答