2010-11-16 243 views
2

所以即時通訊基本上使用鏈接,滾動瀏覽一系列div選擇正確的。 即點擊開心,並滾動到'開心'div,JQuery,ScrollTop滾動到最後div而不是ID div

但是,滾動似乎沒有去它的鏈接,但滾動到列表中的第三個div。

繼承人的代碼:

<div id="portfoliowrapper"> 
     <div class="title">My Portfolio</div> 
     <div class="row1"><a id="kazookilink" href="#">Kazooki</a></div> 
     <div class="row1"><a id="uodlink" href="#">Universe of Downhill</a></div> 
     <div class="row1"><a id="kudialink" href="#">Kudia</a></div> 
    </div> 
    <div id="description"> 
     <div id="top">description</div> 
     <div id="kazooki">kazooki</div> 
     <div id="uod">Universe of Downhill</div> 
     <div id="kudia">kudia</div> 
    </div> 



<script type="text/jscript"> 

     function goToByScroll(id){ 
     id = id.replace("link", "");  
     $("#description").animate({scrollTop: $("#"+id).offset().top},'slow'); 
     }; 

     $(".row1 > a").click(function(e) { 
     // Call the scroll function 
     goToByScroll($(this).attr("id"));   
     }); 

</script> 

回答

1

需要使用position(),而不是offset(),也需要設置#descriptionposition:relative

那麼你需要考慮當前的scrollTop

最後您需要取消默認點擊行爲。

完整示例在http://www.jsfiddle.net/gaby/TneA6/

+0

這非常有效! – Jonathan 2010-11-18 13:08:07

+0

工作很好。謝謝- – Downpour046 2013-02-25 02:02:21

0

這可能只是滾動到頁面的最底部 - 因爲頁面結束它無法使div的頂部與頁面的頂部。嘗試在頁面底部添加一堆空白空間(<div style='height: 1000px;"></div>或其他),看看它是否仍然會導致意外的行爲。

+0

好的,IVE試過了。點擊鏈接時仍然滾動到div的底部。但是現在,當鏈接重新點擊時,它會滾動到第一個div。 – Jonathan 2010-11-16 20:52:40

0

我猜你需要防止點擊的日常行爲:

$(".row1 > a").click(function(e) { 
     // prevent default behaviour 
     e.preventDefault(); 
     // Call the scroll function 
     goToByScroll($(this).attr("id"));   
    }); 

只是猜測,但。

+0

本來有這個,但沒有區別。只是嘗試再次添加它並進行測試,並沒有區別與此。 – Jonathan 2010-11-16 20:54:23