2011-03-15 99 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()不動畫的「頂」值。