与jQuery相反/反向滚动onScroll

时间:2012-11-01 12:30:24

标签: jquery scroll scrolltop

我想制作一个在左侧div上正常向下滚动的页面,但是在右侧div上向上滚动(向上)。 但是,当我开始左侧的滚动时,它不会启动右侧的滚动。 当我滚动它时,只向左滚动一段长度,然后它按预期开始滚动。

http://jsbin.com/orole3/36/edit

我做错了什么?

----------------------的Javascript ----------------------

$(document).ready(function(){
   $('#two').scrollTop($('#two')[0].scrollHeight);
   $('#one').scroll(function(){
     var length = $(this).scrollTop();
     $('#two').scrollTop((two.scrollHeight)-length);
   });
});

----------------------的Html ----------------------

<!DOCTYPE html>
<html>
<head>
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
<!--[if IE]>
  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<style>
  #one, #two{
    float: left;
    overflow: scroll;
    height: 100%;
    width: 50%;
  }
</style>
</head>
<body>
  <div id="one">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</div>
  <div id="two">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</div>
</body>
</html>

2 个答案:

答案 0 :(得分:0)

$(document).ready(function(){

   var height = $('#two')[0].scrollHeight;

   $('#two').scrollTop(height);

   height = $("#two").scrollTop();

   $('#one').scroll(function(){
     var length = $(this).scrollTop();

     console.log(height);
     console.log(length);

     $('#two').scrollTop(height - length);

   });
});

scrollHeight实际上不等于scrollTop()

http://jsbin.com/orole3/43/edit

答案 1 :(得分:0)

$(document).ready(function(){
   $('#two').scrollTop($('#two').height());
  var offset = $("#two").height() - $('#two').scrollTop();
   $('#one').scroll(function(){
     var length = $("#one").scrollTop();
     $('#two').scrollTop($('#two').innerHeight()-length-offset);
   });
});