2016-05-07 2 views
0

私は周りを見回しましたが、私が見つけた答えはすべて、ユーザーがページの一番上にいるときにのみ機能します。そうでなければ、ユーザーは間違った場所に移動しますユーザーはページをスクロールダウンしました。ユーザーがすでにページをスクロールしているときに、アンカータグにナビゲートするにはどうすればよいですか?

$('.sidebar a').click(function() { 
    var $url = $(this).attr('href'); 
    var $offset = $($url).offset(); //Getting the position of the anchor 
    var $currPos = $('.site-wrap').scrollTop(); //Getting the current scrolled position 
    $('.site-wrap').animate({ 
    scrollTop: $offset.top - $currPos 
    }, 1000); 
    return false; 
}); 

私がように見えることはできません。ここで私は今しようとしているものです(「.sidebar」サイドバー内のアンカータグへのリンクがあり、「.siteラップは、」スクロールdivがあります)それがなぜ機能していないのかを理解する。私は初心者ですから、それはおそらく何か些細なことですが、私は正しい方向へのポインタを感謝します。

+0

コンテンツの品質を向上させるのに役立つこのURL [http://stackoverflow.com/help]をご確認ください –

+0

@willieこんにちは、私の質問のどの部分がSEエチケットに違反しているのかわかりません - ifそれはあまりにも多くのトラブルではない、私はそれを修正することができます私に教えてください? – namikazeartemis

答えて

0

私が間違っていない場合は、現在のスクロール位置に関係なく、要素の位置をスクロールしたいだけです。

は、だから、方程式のうち、現在のスクロール位置を取得し、代わりに.offsetのjQueryの.position機能を使用するためにenoughtする必要があります。

$('.sidebar a').click(function() { 
    var $url = $(this).attr('href'); 
    var $offset = $($url).position(); //Getting the position of the anchor 
    $('.site-wrap').animate({ 
    scrollTop: $offset.top 
    }, 1000); 
    return false; 
}); 

現在の要素がある場合、これは、動作します.site-wrapの直接の子供。

+0

ありがとう! .position()は完全に機能します。私が間違った機能を使用していたので、私はものをオーバーコンプリートしていたと思います。 – namikazeartemis

関連する問題