Изменить свиток скрытого div - PullRequest
9 голосов
/ 23 июня 2010

У меня есть скрытый div с фиксированной высотой и полосой прокрутки.Я хотел бы изменить положение прокрутки, но браузер не позволит мне сделать это, так как div скрыт.Свойство scrollTop будет иметь значение 0.

Также я не хочу показывать и скрывать div, что вызывает мерцание.

Если кто-нибудь знает, как это сделать, онбыть действительно полезным.

Спасибо!

Ответы [ 3 ]

3 голосов
/ 23 июня 2010

Вы можете сохранить прокрутку, используя функцию данных jQuery.

function SaveScroll(val)
{
    $(the_element).data("Scroll", val);
}

function Show()
{
    var element = $(the_element);

    // prevent from showing while scrolling
    element.css
    ({
        position: "absolute",
        top: "-50000px",
        left: "-50000px",
        display: ""
    });

    // Scroll to the position set when it was hidden
    element.scrollTop(element.data("Scroll"));

    // show the element
    element.css
    ({
        position: "",
        top: "",
        left: ""
    });
}

Это может помочь


Возможно, вы можете просто использовать visibility: hidden вместо display: none.Видимость держит элемент там, где он есть.Я считаю, что это то же самое, что и opacity: 0, но это кросс-браузерное решение.

2 голосов
/ 24 июня 2010

Мой вопрос не был завершен.Div не скрыт сам по себе.Это часть контейнера div, которая скрыта.Внутренний div отображается с его родителем.

<div class="container hidden">
    <div id="some_div">Content</div>
    <div id="my_div">I wanted to scroll this one</div>
    <div id="other_div">Content</div>
</div>

Мы используем jQuery, придумал пользовательское событие "onShow".

Так что теперь мы можем сделать это:

$('#my_div').bind('show', function() {
    handle_scrollTopOffset();
});

Когда событие show связано, оно добавляет класс .onShow в div.И функция jQuery.fn.show() была переопределена, чтобы вызвать событие 'show' для потомков, которые имеют класс .onShow.

Спасибо всем за их предложения.Извините, я предоставил неполный вопрос.Я передам все детали в следующий раз.

2 голосов
/ 23 июня 2010

Чтобы предотвратить мерцание div и исправить <div> недоступность скриптов, вы можете использовать скрытие позиции вместо "display: none;":

.hidden {
  position: absolute !important;
  left: -9999px !important;
  top: -9999px !important;
}
...