Выделите определенный div, который не отображается - PullRequest
0 голосов
/ 28 декабря 2011

Я пытаюсь прокрутить к вершине определенного контейнера 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);
}

Ответы [ 2 ]

2 голосов
/ 11 января 2012

Прокрутка до элемента не всегда работает, потому что Изотоп использует позиционирование CSS для позиционирования, а не top/left.Вы можете отключить преобразования с помощью transformsEnabled: false.Еще лучше, если вам нужно получить позицию элемента с помощью изотопа, используйте itemPositionDataEnabled .

1 голос
/ 28 декабря 2011

Мне кажется, я вижу твою проблему. Попробуйте заменить код 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, которую вы опубликовали выше. Проблема вызвана тем, что элементы с классом showMe скрываются после вызова функции scrollTo. Попробуйте скрыть элементы showMe, как только пользователь щелкнет по ним, а не затемнять их.

...