Javascript 重新初始化Jquery jScrollPane时,它会返回顶部。为什么?

Javascript 重新初始化Jquery jScrollPane时,它会返回顶部。为什么?,javascript,jquery,jscrollpane,jquery-jscrollpane,Javascript,Jquery,Jscrollpane,Jquery Jscrollpane,我使用jquery库jScrollPane为整个页面设置自定义滚动条 scroll_bar = $('body>div').jScrollPane( { autoReinitialise: true, showArrows: true, maintainPosition: false }).data('jsp'); 当在页面底部添加新内容时(用户位于页面底部),我调用: 这会重新初始化滚动条,但会将用户带

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

scroll_bar = $('body>div').jScrollPane(
     {
        autoReinitialise: true,
            showArrows: true,
            maintainPosition: false
     }).data('jsp');
当在页面底部添加新内容时(用户位于页面底部),我调用:


这会重新初始化滚动条,但会将用户带到页面顶部。我希望窗户保持在原来的位置。有什么解决方案吗?

您确定获得了所需的数据吗?我不知道这是否有效,但您是否尝试过:

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();
            // 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();

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

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();
            // 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();

如果希望滚动条保持其位置,应设置

      maintainPosition: true
此外,请尝试按如下方式重新构建代码:

var api = scroll_bar.data('jsp');
api.reinitialise();
            // 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();

希望获得以下帮助:)

如果希望滚动条保持其位置,应设置

      maintainPosition: true
此外,请尝试按如下方式重新构建代码:

var api = scroll_bar.data('jsp');
api.reinitialise();
            // 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();
希望得到以下帮助:)

来自:

  • maintainPosition[boolean]-是否希望滚动窗格的内容在重新初始化时保持其位置-以便在添加更多内容时不会滚动(默认为true)
您可以从以下位置将其设置为
false

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

对于在上述操作之后重新初始化时出现问题的人员,您可以将其设置为
false

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类保留在所有区域中)

对于在上述操作后重新初始化时出现问题的用户:

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类保留在所有区域中)

我认为您的代码和我的代码是相同的。我只是在使用函数链。我试过你的,但它没有重新初始化…我已经有一段时间没有使用jScrollPane了,但是最好问的人是Kelvin,如果你能找到他的话。试试Kelvins网站上的或,看看他是否回答了问题。你知道还有其他类似的库可以在iframe中使用吗?有几个库,但jScrollPane可能是最常见的库。看看其他的一些。但是,我不知道它们是否在iFrame中工作,或者它们在这方面的工作情况如何。我认为您的代码和我的代码是相同的。我只是在使用函数链。我试过你的,但它没有重新初始化…我已经有一段时间没有使用jScrollPane了,但是最好问的人是Kelvin,如果你能找到他的话。试试Kelvins网站上的或,看看他是否回答了问题。你知道还有其他类似的库可以在iframe中使用吗?有几个库,但jScrollPane可能是最常见的库。看看其他的一些。但是,我不知道他们是否在iFrame中工作,或者他们在这方面的工作情况如何。现在它不会改变位置,但不会重新初始化它。在页面中添加新内容后,高度会发生变化,但滚动条不会重新初始化:(您确定要使用api.getContentPane()附加结果吗?以下是我使用的确切代码:滚动条.getContentPane().find(“.video[data msgid~=”+msg_id+”)。新注释”)。在(模板)之前);现在它不会更改位置,但不会重新初始化。在页面中添加新内容后,高度会更改,但滚动条不会重新初始化。:(您确定要使用api.getContentPane()来追加结果吗?下面是我使用的确切代码:scroll_bar.getContentPane().find(“.video[data msgid~=”+msg_id+”)。new_comment”).之前(模板);