2011-09-20 324 views
1

我有一个按钮,它修复了页面内容的位置,然后在窗体从右侧滑入时将其向左推。关闭弹出框后返回页面到原始的scrollTop位置

这工作正常,除了一件事。当用户稍微向下滚动页面并点击按钮时,它成功修复了位置。但是,当他们关闭此表单时,页面不会返回到原始位置......它会将用户带回页面的顶部。我已经发布了下面的jquery,可能有助于更好地解释问题。

还有这里的jsfiddle例子...

http://jsfiddle.net/CMbBC/

var pageContents; 
    var currentscrollpos; 
    $(document).ready(function() { 
     $("a#testbutton").live('click', function() { 
      var currentscrollpos = $(window).scrollTop(); 
      var pageContents = $("body").html(); 
      $("body").html(""); 
      $("<div class='pageContainer'>" + pageContents + "</div>").prependTo("body"); 
      $(".pageContainer").css({'position':'fixed','top':currentscrollpos*-1}); 
      $("html, body").animate({ scrollTop: 0 }, 0); 
      $("<div class='blackout'></div>").appendTo("body"); 
      $(".blackout").css("opacity",0.8).fadeIn('slow', function() { 
       $("<div class='popupPanel'><a class='closeme'>close</a></div>").appendTo("body"); 
       $(".popupPanel").animate({ 
        right: "0px" 
       }, 500, function() { 
        $(".popupPanel").css("position","absolute") 
       }); 
       $(".pageContainer").animate({ 
        left: "-200px" 
       }, 500, function() { 
       }); 
       $("a#testbutton").append(currentscrollpos) 
      }); 
      return false; 
     }); 

     $('.closeme').live('click', function() { 
      var pageContents = $(".pageContainer").html(); 
      $(".popupPanel").css("position","fixed").animate({ 
       right: "-200px" 
      }, 500, function() { 

      }); 
      $(".pageContainer").animate({ 
       left: "0px" 
      }, 500, function() { 
       $(".blackout").fadeOut('slow', function() { 
        $(".blackout").remove(); 
        $("body").html(pageContents); 
        $("html, body").animate({ scrollTop: currentscrollpos }, 0); 
       }); 
      }); 
     }); 
    }); 

回答

2

您使用的是本地的变量,因为你正在使用var

var currentscrollpos = $(window).scrollTop(); 

相反,降var,以便在.closeme点击功能。您刚开始时已使用var。所以:

currentscrollpos = $(window).scrollTop(); 

这样,最初的变量将被设置,可以通过这两个函数来访问。目前,您正在声明a#testbutton点击函数中的另一个变量,使原始变量保持不变。

http://jsfiddle.net/pimvdb/CMbBC/2/

+0

完美谢谢... – Tom

+0

如果$(窗口)不起作用,您可以尝试使用$(document.body)或$(“body”) – raphie