2013-05-13 67 views
1

我有两个问题,我现在正在摔跤。我试图用JavaScript跳转到页面上的ID(我喜欢JS给出的慢动画)。虽然我使用的JavaScript虽然不工作。这里有一个JS拨弄着什么我工作:Javascript scroll to div

http://jsfiddle.net/n6H8v/5/

下面是代码(抱歉长HTML,但不得不使用它的测试滚动):

HTML:

<section id="thumbs-work"> 

    <img id="top-cat" src="images/cat.png"> 

     <p> /* Large amount of text to force scrolling */ </p> 
</section> 


    <div class="back-to-top back-to-top-left"> 
     <p><a> 
     <span class="top-jump">BACK TO TOP</span><img src="images/cat.png" alt="back to top"></a></p> 
    </div> 

</div> 

的Javascript:

$(document).ready(function() { 
     $(".top-jump").click(function() { 
       $("html, body").animate({ scrollTop: $("#top-cat").offset().top }, 1000); 
       return true; 
     }); 
}); 

任何帮助将大大APPR eciated

+1

使用此http://jsfiddle.net/xAbpf/ – PSL 2013-05-13 21:06:12

+0

我会建议不要使用JavaScript滚动该页面...只需使用浏览器的内置链接系统重定向到ID或锚点标签即可。动画滚动页面并不会增加用户的时间。 – benastan 2013-05-13 21:09:34

回答

1

这是因为您没有在JSFiddle中加载jQuery。它位于框架&扩展的左上角。

0

我使用这个脚本来完成你的工作,现在代码不匹配你的类名,所以你不得不改变它们,但是这将滚动到底部,然后顺利地返回顶部。 更多信息,请参见Jsfiddle

$('a').click(function(){ 
    $('html, body').animate({ 
    scrollTop: $($(this).attr('href')).offset().top 
}, 1500); 
    return false; 
}); 
0

这里'山JavaScript函数,可能会有所帮助:

window.smoothScrollTo = (function() { 
    var timer, start, factor; 

    return function (target, duration) { 
    var offset = window.pageYOffset, 
     delta = target - window.pageYOffset; // Y-offset difference 
    duration = duration || 500;    // default 1 sec animation 
    start = Date.now();      // get start time 
    factor = 0; 

    if(timer) { 
     clearInterval(timer); // stop any running animations 
    } 

     function step() { 
      var y; 
      factor = (Date.now() - start)/duration; // get interpolation factor 
      if(factor >= 1) { 
      clearInterval(timer); // stop animation 
      factor = 1;   // clip to max 1.0 
      } 
      y = factor * delta + offset; 
      window.scrollBy(0, y - window.pageYOffset); 
     } 

     timer = setInterval(step, 10); 
     //document.getElementById("but").click(); 
     return timer; 
     }; 
    }());