0

特定のdivコンテナの一番上までスクロールしようとしています。現在、私のコードは代わりにページのコンテンツをスクロールして表示しています。誰もがどのように間違っているのか考えていますか?:)コードは次のとおりです。

var openItem;

var showBox = function(item) {
    item.removeClass("loading");
    var infoBox = $("div.test", item);

    // Resize box
    item.width(853);
    item.height(infoBox.outerHeight());

    // Reload Masonry
    $('#container').isotope('reLayout');

    // Insert close button
    $('<a href="#" class="close">Close</a>"')
        .prependTo(".test .content")
        .click(function (e) {
            e.preventDefault();
            close(item);
        });

    // Insert close button
    $('<a href="#" class="close">Close</a>"')
        .appendTo(".test .content")
        .click(function (e) {
            e.preventDefault();
            close(item);
        });

    // Fade in test box
    setTimeout(function () {
        testBox.fadeIn();

        // Scroll box into view
        $(document).scrollTo(item, 1000);
    }, 280);
}
4

2 に答える 2

2

Isotopeは位置付けにCSS変換を使用するため、アイテムへのスクロールは常に機能するとは限りませんtop/left。で変換を無効にすることができtransformsEnabled: falseます。さらに良いことに、Isotopeを使用してアイテムの位置を取得する必要がある場合は、itemPositionDataEnabledを使用します。

于 2012-01-11T14:22:13.120 に答える
1

私はあなたの問題を見ていると思います。setTimeoutコードを次のように置き換えてみてください。

// Fade in test box
setTimeout(function() {
    testBox.fadeIn(function() {
        // Scroll box into view
        $(document).scrollTo(item, 1000);
    });
}, 280);

元のコードが以前に機能していなかった理由$(document).scrollTo(item, 1000)は、呼び出さitemれた日時がまだ表示されていなかったためscrollTo、アイテムがどこにあるかわからなかったためです。

コード例を使用したコメントに応じて編集します。

表示されているバグは、上記で投稿した関数によるものではないようです。この問題は、関数が呼び出された後にshowBoxクラスが非表示になる要素が原因で発生します。要素をフェードアウトするのではなく、ユーザーがクリックしたらすぐに非表示にしてみてください。showMescrollToshowMe

于 2011-12-28T12:07:31.643 に答える