更新:申し訳ありませんが、これは私の間違いでした。私はデータターゲットの間違ったIDを私がスクロールしたいdivの実際のIDよりも呼び出すことになっていたので、エラーです! 私は信じられないほど馬鹿だと思って、みんなの時間を無駄にしてすみません。私は質問を削除しますが、それは私をさせません。データ属性を取得しようとしていますが、未定義です
私は、任意のターゲットのdivに任意のdiv要素からsmoothscrollするために、単純なJS関数を作成することができるようにしたいです。
スムーススクロールクラスが追加され、data-target="#elementID"
で指定されたターゲットdivを持つ場合、これを行う方法です。
<div class="smooth-scroll" data-target="targetDiv">Source link</div>
// Elsewhere on the page
<div id="targetDiv"></div>
しかし、私は、以下の機能を使用しようとすると、ソースをクリックしたときに、私が見るすべては、私は、問題はそれがtarget
の値を取得していないということだと思いますUncaught TypeError: Cannot read property 'top' of undefined
$('.smooth-scroll').click(function() {
event.preventDefault();
var target = this.getAttribute('data-target');
$('html').animate({
scrollTop: $('#'+target).offset().top,
easing: 'easeInOutQuart'
}, 1000);
});
です。これは正しいのですか、それとも何か他にありますか?
私はjsFiddleを作成しようとしたとき、それは動作します - だから地球上で何が起こっているのですか? https://jsfiddle.net/rv0nmb44/
'event'は、ターゲットを慰め、私たちはそれが言うことを知らせることができます –
定義されていませんか? – Vivick
jQueryを使用しているので、 '$(this).data( 'target')'または '$(this).attr( 'data-target')'を使用して 'target'を割り当てて、違い。 –