Как использовать якорную ссылку и прокручивать одновременно? - PullRequest
0 голосов
/ 28 февраля 2009

Здесь снова нужна помощь:)

У меня есть этот сайт: 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 голосов
/ 28 февраля 2009

вы должны вставить прокрутку в вашу функцию по нажатию кнопки, что-то вроде:

// 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;
});
0 голосов
/ 28 февраля 2009

Может быть, вам стоит как-нибудь остановить событие. В прототипе я бы сделал что-то вроде этого: $ ('. btn-slide'). наблюдаем ('click', function (e) {$ ('# panel'). slide (); Event.stop (e);})

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...