2010-10-15 54 views
2

我創建了一個jQuery函數,它將一個類應用到一個段落,然後在單擊按鈕時滾動到該段落。當段落與文檔相關時它工作正常,但我希望滾動發生在div內。目前,滾動正在工作,並且正在正確應用該類,但它不滾動到正確的段落。似乎它每次點擊按鈕時都會隨機滾動。當div裏面的jQuery滾動工作不正常

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<script type="text/javascript" src="jquery-1.4.2.min.js"></script> 
<script type="text/javascript"> 
     $(function() { 

       $('.down').click(function() { 
        $('.current + p').addClass('current'); 
        if ($('p:last').hasClass('current')) { 
         $('p').removeClass('current'); 
         $('p:last').addClass('current'); 
         return false;     
        } 
        else { 
        $('.current:first').removeClass('current'); 
        return false; 
        } 
       }); 

       $('.up').click(function() { 
        $('.current').prev('p').addClass('current'); 
        if ($('p:first').hasClass('current')) { 
         $('p').removeClass('current'); 
         $('p:first').addClass('current'); 
         return false; 
        } 
        else { 
        $('.current:last').removeClass('current'); 
        return false; 
       } 
      }); 
      $('.down, .up').click(function() { 
       $('.slider').animate({scrollTop: $(".current").offset().top},'slow'); 
      }); 
     }); 
</script> 

<style type="text/css"> 
.slider { 
position: relative; 
background: #ccc; 
overflow: scroll; 
height: 100px; 
} 
.slider p { 
position: relative; 
} 
.nav { 
position: fixed; 
left: 500px; 
z-index: 10; 
} 

p { 
height: 100px; 
} 
</style> 

</head> 

<body> 

<div class="nav"> 
<a href="#" class="up">UP</a> 
<a href="#" class="down">DOWN</a> 
</div> 

<br /><br /> 
<div class="slider"> 
<p class="current">This is the first paragraph</p> 
<p>111111111111111111111111</p> 
<p>222222222222222222222222</p> 
<p>333333333333333333333333</p> 
<p>44444444444444444444444444</p> 
<p>This is the last paragraph</p> 
</div> 


</body> 
</html> 

要在工作時看到它,請將CSS中的「.slider」更改爲height:1000px並且沒有溢出。此外,改變這一行:

$('.slider').animate({scrollTop: $(".current").offset().top},'slow'); 

這樣:

$('html,body').animate({scrollTop: $(".current").offset().top},'slow'); 

回答

0

適當利用 '這個' 關鍵字可能的幫助。