2011-03-15 104 views
1

我有一个页面,需要多个div具有相同的类名称。在每个div内是我想通过控制器滚动的文本。jquery div滚动问题

我无法弄清楚如何使每个div中的控制器只滚动其特定div中的文本,而不是滚动页面上的每个div中的文本。每一个的div的是这样的:

<div class="box-wrap"> 
    <div class="box"> Text that will be scrolled </div> 
    <div class="controllers"> 
     <div class="button1"> Scroll Up </div> 
     <div class="button2"> Scroll Down </div> 
    </div> 

使用下面的一切工作的代码,但在每个格按钮将使格在页面上滚动:

$(".button1").click(function(){ 
    $(".block").animate({"top": "-=50px"}, "slow"); 
}); 


$(".button2").click(function(){ 
    $(".block").animate({"top": "+=50px"}, "slow"); 
}); 

更改代码$(".block", this).animate({"top": "+=50px"}, "slow");使它完全停止工作。

任何想法?

+0

你可以请添加换行符和格式化你的html,使它更具可读性吗?并且请把它放在jsfiddle.net上,这样人们可以围绕它玩 – corroded 2011-03-15 09:02:58

+0

而不是使用类名,可以像下面的答案一样使用.parent()来尝试。 – iamserious 2011-03-15 10:20:11

回答

1

首先,您的示例代码中没有.block类。假设你的意思,而不是.box,您可以使用parent()prev()方法:

$(this).parent(".controllers").prev(".box").animate({"top": "+=50px"}, "slow"); 
1
$(".button1").click(function(){ 
    $(this).parents(".box-wrap").find(".box").animate({"top": "-=50px"}, "slow"); 
}); 

希望这会有所帮助。

虽然如果你滚动文本,我会建议使用scrollTop()不动画的“顶”值。