2010-07-27 102 views
0

我有一个定义高度的模态框。这个盒子里面有一个手风琴盒子,当用户点击一个链接时就会展开。切换时手风琴盒的高度超过模式框的高度,因此会出现滚动条。用Jquery自动向下滚动?

我想自动将小节向下滚动到最低点,以在手风琴盒中显示新内容。

的手风琴盒看起来是这样的:

<script type="text/javascript"> 
$(document).ready(function(){ 
$(".btn-slide").click(function(){ 
$("#panel").slideToggle("slow"); 
$(this).toggleClass("active"); return false; 
}); 
}); 
</script> 

是否有这个滚动功能整合下到已有的功能呢?有这种类型的行为的现有Jquery函数吗?

回答

1

如果你不想依赖任何插件,或者改变实际的URL,你可以使用scrollTop的,看到http://api.jquery.com/scrollTop/

干杯。

+0

我想过这个,但内容是动态的,所以我不确定这个会是什么。 – Thomas 2010-07-27 18:57:37

+0

你应该有一个对通缉元素的引用,所以你可以使用$(window).scrollTop($(wantedelement).offset()。top) - 如果我没有弄错。 – peol 2010-07-27 19:02:42

+0

好吧,我这样设置: $(document).ready(function(){(“。btn-slide”)。click(function(){(window).scrollTop($(document) “#no”)。offset()。top) }); }); #no是我的手风琴小组的最底部。这似乎并不火。我是否正确设置了它? – Thomas 2010-07-27 19:14:14

2

如果我明白你在找什么...

如果你想一个很好的平滑滚动,那么scollTo plugin是一个不错的选择。

如果你不在乎,只需使用散列。 location.hash ='#someid';

+0

是啊,这正是我所期待的。我并不关心任何动画,当手风琴触发时我只需要到那里。如果可能的话,我想避免使用一些额外的插件。 – Thomas 2010-07-27 18:53:07

0

诀窍是使用可滚动的外部容器div。这允许找出保存实际内容的内部div的大小。
我的解决方案(你必须做你的手风琴一些调整):


<html> 
    <head> 
     <style> 
     #container { 
      overflow-y: scroll; 
      height: 200px; /* defined height */ 
     } 
     </style> 
    </head> 
    <body> 
     <div id="container"> 
     <div id="content"> 
      <!-- dynamic content --> 
     </div> 
     </div> 
    </body> 
    <script type="text/javascript" src="http://jquery.com/src/jquery-latest.js" ></script> 
    <script type="text/javascript"> 
     function onNewContent() { 
     $("#container").scrollTop($("#content").height()); 
     } 

     //test 
     $(document).ready(function() { 
     for(var i = 0; i < 500; ++i) 
      $("#content").append($("<div/>").html(i)); 
     onNewContent(); 
     }); 
    </script> 
</html>