如何使用锚链接并同时滚动?

时间:2009-02-28 06:48:44

标签: javascript jquery

这里再次提供一些帮助:)

我有这个网站:sharemyplaylists.com

使用此滚动插件可以在点击时平滑地将用户带到锚点,这里是代码:

// Smooth anchor link script
$(document).ready(function() 
{
   $('a[href*=#]').click(function() 
   {
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'')
         && location.hostname == this.hostname) 
      {
         var $target = $(this.hash);
         $target = $target.length && $target 
            || $('[name=' + this.hash.slice(1) +']');

         if ($target.length) 
         {
            var targetOffset = $target.offset().top;
            $('html,body')
               .animate({scrollTop: targetOffset}, 1000);
            return false;
         }
      }
   });
}); 

// open panel on click script
$(".btn-slide").click(function()
{
   $("#panel").slideToggle("slow");
   $(this).toggleClass("active"); return false;
});

无论如何,我还有一个按钮“提交您的播放列表”,打开顶部面板以显示侧边栏中的表单,当我点击它时,它只是打开面板(意味着我没有被带到顶部的锚也)。这就像2位代码是冲突的,只有一个脚本可以工作。有关如何单击侧栏中的“提交您的播放列表”的任何想法,请将用户带到顶部标题锚点并单击打开面板?

干杯, 基思

2 个答案:

答案 0 :(得分:2)

您应该在点击按钮时将滚动插入到您的功能中,例如:

// open panel on click script
$(".btn-slide").click(function()                
{
  // here insert scrolling
  targetOffset = 0; // to scroll
  $('html,body').animate({scrollTop: targetOffset}, 1000);
  // toggle
  $("#panel").slideToggle("slow");
  $(this).toggleClass("active"); return false;
});

答案 1 :(得分:0)

也许你应该以某种方式停止这个事件。 在原型中,我会做这样的事情: $('。btn-slide')。observe('click',function(e){$('#panel')。slide(); Event.stop(e);})