在第一次尝试重新加载后保存div的位置

时间:2016-01-13 12:17:14

标签: javascript jquery

我使用这段简短的代码来保存div内部的滚动(偏移)位置,以便在重新加载后我能够将div加载到相同位置的div:

   $(window).on('beforeunload', function() {
       var scrollToPos = jQuery('.active').position().top;
       localStorage.setItem("scrollToPos", scrollToPos);
   });

在页面点击后动态添加active类,但问题是在第一次重新加载后我总是得到scrollToPos = 0并且只从这一点开始保存正确的位置......任何想法为什么就是它? THX

更新

好吧,我会分享整个画面,因为我认为它藏在那里的某个地方。 我有这个下拉列表:

<ul id="sites" class="dropdown-menu pull-right">
     <li><a href="#site_site1.com" class="sitePick">site1.com</a></li>
     <li class=""><a href="#site_site2.com" class="sitePick">site2.com</a></li>
     <li><a href="#site_site3.com" class="sitePick">site2.com</a></li>
</ul>

单击时调用此函数:

   $('.sitePick').click(function(event){
     $('.wrapperSite').css("display", "none");
     var site = event.target.hash.replace(/\./, "\\.");
     var offset = $(this).offset();
     $(site).show();
     initPlacements(site);
  });

显示相关所选站点的div。第二个下拉列表是由第一个下拉列表创建的,如下所示:

  function initPlacements(site){
     $('#placemetnsList').remove(); // clean previous
     var placements = ['<ul id="placemetnsList" class="dropdown-menu pull-right">'];
     $(site).find('.placementName').each(function(){
       placement = $.trim(this.innerHTML);
       placements += '<li><a href="' + site.replace(/\\/g, '') + '" class="toPlacement" onclick="scrollToPlacement(\'' + placement +'\')">' + placement + '</a></li>';
     });
     placements += '</ul>';
     $(placements).appendTo('#placementsNav');
   }

当第二个下拉列表中的任何元素被点击时,将调用此函数:

function scrollToPlacement(placementName){
  $("#wrapper").scrollTo($(".active>.placementWrapper>.placementName[title='" + placementName + "']"));
  }

并且我按标题滚动到div但是我想使用该位置,以便如果有人滚动我仍然会重新加载到用户滚动的页面,所以我开始使用我的顶部的第一段代码题。现在我添加了这段代码来执行加载滚动:

  $(document).ready(function(){
    var site = window.location.hash.replace(/\./, "\\.");
    if (site){
      $(site).show();
      initPlacements(site);
      var pos = localStorage.getItem('scrollToPos')*(-1);
      $("#wrapper").animate({ scrollTop: pos + 110 }, 1);
      }
  });

但它只有在第二次从下拉列表中选择一个网站时才有效...第一次无论我在哪里滚动到

,它总是初始化为零

0 个答案:

没有答案