2016-10-31 10 views
0

誰かが以下のコードがうまくいかない理由を伝えることはできますか?固定ヘッダー(ここではID「jeden」)の高さを尊重して、スクロールをスムーズにアンカーの送り先にスクロールさせることを目的としています。この機能でjQueryの単純なスクロールは機能しません

$(document).ready(function() { 

var headerHeight, part, place; 

function getOffsets() { 
    headerHeight = $('#jeden').height(); 
    part = $(this).attr('href'); 
    place = $(part).offset().top - headerHeight; 
} 

$(window).load(getOffsets).resize(getOffsets); 

$(function() { 
    $('a').click(function (e) { 
     $('html, body').animate({ 
      scrollTop: place 
     }, 'slow'); 

     return false; 
    }); 
}); 
}); 
+0

試み - scrollTopスプライト:$(この).offset()をトップ - $( '#のjeden ').height() – Tasos

答えて

0

;:

function getOffsets() { 
    headerHeight = $('#jeden').height(); 
    part = $(this).attr('href'); 
    place = $(part).offset().top - headerHeight; 
} 

余地はありません。 $(this)は例外またはundefinedを返すため、そこに何かを定義する必要があります。

+0

私はそれを 'part = $(' div ')。attr(' href ');'に変更しました。リンクがどこにもつながっていない。 – bakrall

+0

あなたがウィンドウのサイズを変更したときにウィンドウをスクロールしたいのは、どの 'div'ですか? –

+0

まあ、ヘッダー内のリンクが 'href'に対応する適切な' id'を持つ 'div'sであるページのすべての部分が' div'です。 – bakrall

0

ご協力ありがとうございました:)私はコードを稼働させることができました。私はまた、メインナビゲーションのリンクにのみコードを制限しました。私はそれをやっていないと、私のページのタブパネルにあった他のリンクが動作しなくなってしまうことを発見しました。だから私はメインナビゲーションのリンクにクラス.anchorHeaderを与え、私は次のようにコードを再構築しました。

$(document).ready(function() { 

    var headerHeight, part, place; 

    function getOffsets() { 
     headerHeight = $('#jeden').height(); 
    } 

    $(window).load(getOffsets).resize(getOffsets); 

    $(function() { 
     $('.headerAnchor').click(function() { 
      part = $(this).attr('href'); 
      place = $(part).offset().top - headerHeight; 

      $('html, body').animate({ 
       scrollTop: place 
      }, 'slow'); 

      return false; 
     }); 
    }); 
}); 

ウィンドウのサイズを変更するときにも完璧に動作します - 私はこのフォーラムで見つかった提案に感謝:https://forum.jquery.com/topic/scrolling-when-resizing-window

関連する問題