2013-05-17 48 views
0

所以,我有一個非常獨特的問題(基於架構)。具有局部視圖的光滑滾動小車

有在this homepage平滑滾動。它的工作原理罰款。如果您單擊頂部欄中的「註冊」,表單(局部視圖)顯示正常。現在點擊'關於'或'演示',併發生一些瘋狂的雙滾動。另外,假設我們點擊'關於'(點擊註冊後),雙滾動發生,如果你再次滾動並再次點擊它,它會正常工作,但現在向上滾動並點擊'Demo',它就會發生再次。這可以變得相當有趣交替點擊哈哈......這不是重點,可悲的是。

我是一個絕對的初學者,當談到JavaScript和我一直在嘗試這幾天,但沒有。

這是正在使用的「關於」 &「演示」按鈕的代碼:

//Smooth scroll - excludes register 
$('a[href*=#], a[href*="/#"]').click(function() { 
     var hash = $(this).attr('href'); 
     hash = hash.slice(hash.indexOf('#') + 1); 
     if (hash) { $.scrollTo(hash == 'top' ? 0 : 'a[name='+hash+']', 500); window.location.hash = '#' + hash; return false; } 
}); 

這是註冊表單:

if (typeof window.history.pushState == "function") { 
    function showRegister() { 
     if (window.location.pathname == '/home/register') { 
      var form = $('#pg-signup-register'); 

      $('#landing-register-clip').css({ 'max-height': window.innerHeight + 'px' }); 

      form.css({ 
       'margin-top': ((window.innerHeight - form.outerHeight())/2) + 'px' 
      }); 
      $('#landing-register').animate({ 
       height: window.innerHeight + 'px' 
      }, 1000); 

      $.scrollTo(0, 500); 
     } else { 
      $('#landing-register').animate({ 
       height: 0 
      }, 1000); 
     } 
    } 

    window.addEventListener('popstate', showRegister); 

    // Smooth scrolling - register form 
    $('a[href^="/home/register"], a[href="/"]').click(function() { 
     if (window.location.pathname != $(this).attr('href')) 
      window.history.pushState(null, null, $(this).attr('href')); 
     showRegister(); 
     return false; 
    }); 

} 

回答

0

這個問題是通過實現系統解決使用散列而不是/home/register這是IE和FF 3.6支持所需要的。

有關更多詳細信息,請參閱this問題。使用

代碼:

// Show the register form when URL = #register 
if (typeof window.history.pushState == "function") { 
    function showRegister() { 
     if (window.location.hash == '#register') { 

      var form = $('#pg-signup-register'); 

      $('#landing-register-clip').css({ 'max-height': window.innerHeight + 'px' }); 

      form.css({ 
       'margin-top': ((window.innerHeight - form.outerHeight())/2) + 'px' 
      }); 
      $('#landing-register').animate({ 
       height: window.innerHeight + 'px' 
      }, 1000); 

      $.scrollTo(0, 500); 
     } else { 
      $('#landing-register').animate({ 
       height: 0 
      }, 1000); 
     } 
    } 

    window.addEventListener('popstate', showRegister); 

    // Smooth scrolling - register form 
    $('a[href^="#register"], a[href="/"]').click(function() { 
     if (window.location.pathname != $(this).attr('href')) 
      window.history.pushState(null, null, $(this).attr('href')); 
     showRegister(); 
     return false; 
    });