2013-01-09 87 views
0

對於我的導航,我使用滾動來顯示下面顯示的jquery div,但是當我第一次點擊鏈接時,它會滾動並忽略頂部的偏移量,但是如果我要再次單擊該鏈接,會自行改正。JQuery滾動到Div忽略偏移

$(document).ready(function() { 
    function filterPath(string) { 
    return string 
    .replace(/^\//,'') 
    .replace(/(index|default).[a-zA-Z]{3,4}$/,'') 
    .replace(/\/$/,''); 
    } 
    var locationPath = filterPath(location.pathname); 
    var scrollElem = scrollableElement('html', 'body'); 

    $('a[href*=#]').each(function() { 
    var thisPath = filterPath(this.pathname) || locationPath; 
    if ( locationPath == thisPath 
    && (location.hostname == this.hostname || !this.hostname) 
    && this.hash.replace(/#/,'')) { 
     var $target = $(this.hash), target = this.hash; 
     if (target) { 
     var targetOffset = $target.offset().top -100; 
     $(this).click(function(event) { 
      event.preventDefault(); 
      $(scrollElem).animate({scrollTop: targetOffset}, 400, function() { 
      location.hash = target; 
      }); 
     }); 
     } 
    } 
    }); 

    function scrollableElement(els) { 
    for (var i = 0, argLength = arguments.length; i <argLength; i++) { 
     var el = arguments[i], 
      $scrollElement = $(el); 
     if ($scrollElement.scrollTop()> 0) { 
     return el; 
     } else { 
     $scrollElement.scrollTop(1); 
     var isScrollable = $scrollElement.scrollTop()> 0; 
     $scrollElement.scrollTop(0); 
     if (isScrollable) { 
      return el; 
     } 
     } 
    } 
    return []; 
    } 

}); 

起初我以爲它可能已被一個問題,運行它關閉我的本地機器,但是當網頁上傳到服務器發生此錯誤。

任何幫助將不勝感激。

+0

如果你刪除'location.hash = target;',會發生什麼? – Blazemonger

+0

@Blazemonger修復它,非常感謝你! :) –

回答

0

嘗試從您的.click事件處理程序中刪除location.hash = target;。這將導致動畫完成後跳轉。