Javascript 表分拣机(莫蒂叉)/恢复车身滚动位置-正确吗?

Javascript 表分拣机(莫蒂叉)/恢复车身滚动位置-正确吗?,javascript,jquery,tablesorter,Javascript,Jquery,Tablesorter,我搜索更好的或官方的方法来恢复tbody表内容的滚动位置 tablesorter 2.26.6 jquery 2.2.3 我不使用tablesorter插件pager,因为我的所有内容都是可滚动的(不带页面),并且我有没有滚动条插件。也许这是我的问题 tablesorter的代码: $(document).ready(function () { $("#fsi_srvovtable") .tablesorter({ theme: "bootstrap", w

我搜索更好的或官方的方法来恢复tbody表内容的滚动位置

tablesorter 2.26.6
jquery 2.2.3

我不使用tablesorter插件pager,因为我的所有内容都是可滚动的(不带页面),并且我有没有滚动条插件。也许这是我的问题

tablesorter的代码:

$(document).ready(function () {
   $("#fsi_srvovtable")
    .tablesorter({
      theme: "bootstrap",
      widthFixed: true,
      showProcessing   : true, 
      headerTemplate: '{content} {icon}',
      widgets: ["storage", "saveSort", "uitheme", "filter"],
      headers: { 0: { 
                        sorter: false, 
                        filter: false
                    }
               },
      widgetOptions: {
         filter_reset : 'button.reset',
         filter_hideFilters: false,
         filter_ignoreCase: true,
         filter_saveFilters: true,
         filter_cssFilter: "form-control",
      }
    })
});
表体高度为663px,内容可滚动

要保存滚动位置,我在stackoverflow上找到了一些提示:

   $("#fsi_srvoverview").on("scroll", function() {
      $("#fsi_scroll").html($("#fsi_srvoverview")[0].scrollTop);
      if (localStorage) {
         var posOverview = localStorage["fsi_srvoverview_scroll"];
         if (posOverview) {
            localStorage.removeItem("fsi_srvoverview_scroll");
         }
         localStorage["fsi_srvoverview_scroll"] = $("#fsi_srvoverview")[0].scrollTop;
         return true;
      }
      else {
         return false;
      }
   });
在所有的求助或过滤之后,我想恢复我的表格的滚动位置

我尝试
.bind(“updateComplete”、…
$(window).load(function(){
$(window).ready(function(){
)来恢复我的表体的滚动位置。但这不起作用,除非我在恢复函数之前插入
window.alert
弹出消息(我想现在可以确定这是最后一次调用)

在网站上,我找到了一个提示并构建了以下内容:

   $(window).load(function(){
      var everythingLoaded = setInterval(function() {
         if (/loaded|complete/.test(document.readyState)) {
            clearInterval(everythingLoaded);
            var posOverview = localStorage["fsi_srvoverview_scroll"];
            if (posOverview) {
               $("#fsi_srvoverview")[0].scrollTop = posOverview;
            }
         }
      }, 10);
   });      
这是可行的——但是桌子跳到了起点,而不是位置

我寻找一个参数来禁用这个跳转,或者有没有更好的方法用tablesorter恢复滚动位置

问候

Jochen

滚动位置改变的原因是,在排序过程中,tbody被分离,因此表格高度由浏览器自动调整。tbody恢复后,滚动条不会恢复到以前的值

我还没有测试过这种方法,但是如果您在“scrollStart”和“filterStart”事件中保存滚动位置,然后在“filterEnd”和“sortEnd”上还原它,它应该可以工作。下面是示例代码:

var top, left,
  $win = $(window);
$('table')
  .on('sortStart filterStart', function() {
    left = $win.scrollLeft();
    top = $win.scrollTop();
  })
  .on('sortEnd filterEnd', function() {
    $win.scrollLeft(left);
    $win.scrollTop(top);
  })
  .tablesorter();

“updateComplete”事件应仅在表更新后触发(“更新”事件);如果
sortEnd filterEnd
组合似乎不起作用,请尝试将其替换为
tablesorter ready

保存功能不起作用或表未跳转到保存位置。但是事件“tablesorter ready”信息非常完美。我更改了源代码:
.on('tablesorter-ready',function(){var posOverview=localStorage[“fsi_srvoverview_scroll”];if(posOverview){$(“#fsi_srvoverview”)[0]。scrollTop=posOverview;})
我认为这比附加的间隔函数要好。非常感谢!