2014-09-02 2 views
0

Я делаю плавный свиток. Но это работает неправильно. Это срабатывает только при нажатии второй раз, но изменение хэша происходит мгновенно в URL-адресе.Плавный прокрутка работает неправильно при использовании window.location.hash

$('nav').click(function(e){ 
     if(window.location.hash == "#block1") { 
      $('html,body').animate({ 
       scrollTop: ($('#block1').offset().top) 
      }) 
     } 
     else if(window.location.hash == "#block2") { 
      $('html,body').animate({ 
       scrollTop: ($('#block2').offset().top) 
     }) 
     } 
    }) 

ответ

0

Вы должны предотвратить поведение по умолчанию щелкни событие:

$('nav').click(function(e){ 
    e.preventDefault(); 
    //continue... 

Надеется, что это помогает.

Edit:

Это должно сделать трюк:

$('nav').click(function(e){ 
    e.preventDefault(); 

    var section = $(this).attr('href'); 

    if(section == "#block1") { 
     window.location.hash = "#block1"; 

     $('html,body').animate({ 
      scrollTop: ($('#block1').offset().top) 
     }); 
    } 
    else if(section == "#block2") { 
     window.location.hash = "#block2"; 

     $('html,body').animate({ 
      scrollTop: ($('#block2').offset().top) 
     }); 
    } 
}); 

Валерий

+0

спасибо, но это не работает ( –

+0

это работа спасибо –

+0

Великий Удачи для вашего проекта! :-) –