1

ページを特定のオフセットまでスクロールする機能があります。視差効果を使用しているので、すべての要素(およびページまたは「スライド」)は、スクロールバーの位置に応じて配置されます。

私の小さな問題は、別のスライドへのリンクをクリックすると、ページが目的のオフセットまでスクロールされますが、バインドされたイベントがトリガーされることです。スムーズな効果を維持するために、どちらでも問題ありません。ただし、少し不具合があり、scrollTop関数が正しく実行される前に1ミリ秒の間トップに戻るようです。したがって、適切な場所にスクロールする前にリンクをクリックするたびに、1ミリ秒の間別のページが表示されているように見えます。

これが私のコードです:

    for(var i=1;i<8;i++)
    {
        (function(slideNum) {
            var tempName = 'slide'+slideNum;
            //console.log(defaultPositions["slide"+i].top);
            $('a.slide'+i).bind('click', function() {
                $.scrollTo((defaultPositions[tempName].top/slidesScrollSpeed)+1+'px', 800);
            });
        })(i);
    }

このコードで問題を見つけるのは難しいかもしれませんが、それに関連しているのは私が見つけたすべてです。何が悪いのか知っていますか?

ありがとう!

PS: jQueryプラグインですが、 ...scrollToと同じ不具合があります。scrollTop

4

1 に答える 1

5

リンクのデフォルトのアクションを防ぐ必要があります。私はあなたがhref="#"あなたのリンクに何かのようなものを持っていると思いますか?クリックバインディングを次のように変更します。

$('a.slide'+slideNum).bind('click', function(event) {
    event.preventDefault();
    $.scrollTo((defaultPositions[tempName].top/slidesScrollSpeed)+1+'px', 800);
});

編集:あなたがiとして渡すことに気づきましslideNumたが、その後使用するiので、に保存されている渡された値を使用するようにコードを変更しましたslideNum

于 2012-08-03T21:13:27.397 に答える