在EndRequest上设置多个滚动条位置

时间:2015-03-16 16:19:00

标签: javascript jquery

我有一个每隔一段时间回发一次的ASP.NET页面,所以我四处寻找一个解决方案来维护页面上可滚动div的滚动条位置。我找到了一个适用于单个div的解决方案(第一个jquery找到了$get),但我正在尝试重新编写它以通过每个div。

 var xPos = [];
 var yPos = [];
 var prm = Sys.WebForms.PageRequestManager.getInstance();
 prm.add_beginRequest(BeginRequestHandler);
 prm.add_endRequest(EndRequestHandler);

 function BeginRequestHandler(sender, args) {
     yPos = [];
     xPos = [];
     $('tableContainer').each(function (theIndex, element) {
         xPos[theIndex] = $(this).scrollLeft;
         yPos[theIndex] = $(this).scrollTop;

     });

 }

 function EndRequestHandler(sender, args) {
     $('tableContainer').each(function (theIndex, element) {
         $(this).scrollLeft = xPos[theIndex];
         $(this).scrollTop = yPos[theIndex];

     });

 }

这是我到目前为止所处的位置,但这似乎没有做到这一点,我不确定它在哪里悬挂。我把它放在jsfiddle中以确保没有遗漏的语法错误,但我不确定从哪里开始。

有人可以提供一些见解吗?它似乎运行了一段时间,然后最终抛出索引超出界限错误;我认为在请求处理程序的开头重置数组会阻止这种情况,至少。

1 个答案:

答案 0 :(得分:0)

经过一些修补,这就是我最终解决问题的方法。我意识到我使用的元素都具有相同的ID,因此我会遍历该类。

 var xPos = [4];
 var yPos = [4];
 var prm = Sys.WebForms.PageRequestManager.getInstance();
 prm.add_beginRequest(BeginRequestHandler);
 prm.add_endRequest(EndRequestHandler);

 function BeginRequestHandler(sender, args) {

     $(".tableContainer").each(function (theIndex, element) {
         xPos[theIndex] = $(this).scrollLeft;
         yPos[theIndex] = $(this).scrollTop;

     });

 }

 function EndRequestHandler(sender, args) {
     $(".tableContainer").each(function (theIndex, element) {
         $(this).scrollLeft = xPos[theIndex];
         $(this).scrollTop = yPos[theIndex];
      });


 }