使用jquery在按钮单击上向上和向下滚动div

时间:2013-05-16 11:48:33

标签: jquery scroll

我正在尝试添加一项功能,根据按钮点击向上和向下滚动div。我能够轻松地向下滚动部分,但是卡住了向上滚动的部分,还有一个问题是一个场景,我将解释,

点击“Go Down”按钮。

如果我手动向下滚动向下拖动滚动条。

现在,如果我再次单击“下移”按钮,滚动条将转到上一个位置,因为分配了滚动值的变量具有检测scroler当前位置的旧值。我将添加一个jsfiddle链接显示我的工作,并粘贴代码。我也可以通过向上滚动选项做错!

http://jsfiddle.net/xEFq5/7/

var scrolled=0;

$(document).ready(function(){


$("#downClick").on("click" ,function(){
    scrolled=scrolled+300;

    $(".cover").animate({
        scrollTop:  scrolled
    });

});


$("#upClick").on("click" ,function(){
    scrolled=scrolled-300;

    $(".cover").animate({
        scrollBottom:  scrolled
    });

});


$(".clearValue").on("click" ,function(){
    scrolled=0;
});


});


<div class='header'><button id='upClick'>Go Up</button> <button id='downClick'>Go Down</button><button class='clearValue'>Clear Value</button> </div>


 <div class='cover'><div class='rightSection'></div></div>

还有一个有这个功能的好插件吗?

7 个答案:

答案 0 :(得分:22)

scrollBottom不是jQuery中的方法。

更新的演示 - http://jsfiddle.net/xEFq5/10/

试试这个:

   $("#upClick").on("click" ,function(){
     scrolled=scrolled-300;
        $(".cover").animate({
          scrollTop:  scrolled
     });
   });

答案 1 :(得分:6)

点击按钮滚动div。

Html代码: -

 <div id="textBody" style="height:200px; width:600px; overflow:auto;">
    <!------Your content---->
 </div>

用于滚动div的JQuery代码: -

$(function() {
   $( "#upBtn" ).click(function(){
      $('#textBody').scrollTop($('#textBody').scrollTop()-20);
 }); 

 $( "#downBtn" ).click(function(){
     $('#textBody').scrollTop($('#textBody').scrollTop()+20);;
 }); 

});

答案 2 :(得分:2)

上传时,您只需使用scrollTop代替scrollBottom

$("#upClick").on("click", function () {
    scrolled = scrolled - 300;
    $(".cover").stop().animate({
        scrollTop: scrolled
    });
});

此外,使用.stop()方法停止 cover div上当前正在运行的动画。在元素上调用.stop()时,会立即停止当前正在运行的动画(如果有)。

FIDDLE DEMO

答案 3 :(得分:0)

它来自scrollBottom它来自哪个有效属性应该是scrollTop,这可以是正值(+)或负值(-)值向下滚动(+)和向上滚动(-),这样您就可以更改:

scrollBottom 

到此scrollTop

$("#upClick").on("click", function () {
    scrolled = scrolled - 300;

    $(".cover").animate({
        scrollTop: scrolled
    });//^^^^^^^^------------------------------this one
});

答案 4 :(得分:0)

要解决您的其他问题,如果用户需要手动滚动,您需要设置scrolled,您必须将处理程序附加到窗口滚动事件。通常这是一个坏主意,因为处理程序将激活很多,一种常见的技术是设置超时,如下所示:

var timer = 0;
$(window).scroll(function() {
  if (timer) {
    clearTimeout(timer);
  }
  timer = setTimeout(function() {
    scrolled = $(window).scrollTop();
  }, 250);
});

答案 5 :(得分:0)

您可以使用这个简单的插件将scrollUpscrollDown添加到您的jQuery

https://github.com/phpust/JQueryScrollDetector

答案 6 :(得分:0)

只是为了添加其他评论 - 在页面顶部禁用向上滚动是值得的。如果用户在顶部已经意外向上滚动,则必须向下滚动两次以启动

if(scrolled != 0){
  $("#upClick").on("click" ,function(){
     scrolled=scrolled-300;
        $(".cover").animate({
          scrollTop:  scrolled
     });
  });
}