JScrollPane не работает должным образом со скрытым контентом
Я установил jScrollPane на своем веб-сайте и не могу заставить его работать.
мой сайт работает следующим образом: с главной страницы, страницы загружаются динамически с помощью jQuery это load()
метод. На странице, которую я загружаю, у меня есть следующий скрипт для запуска jScrollPane:
$(function(){
$('.scroll-pane').jScrollPane();
});
который, кажется, называется. Пока никаких проблем. Проблема в том, что страница в начале недостаточно длинная, чтобы нуждаться в полосе прокрутки. У меня есть скрытый контент, который отображается только на конкретном действия (т. е. нажатие на кнопку показывает содержимое определенного абзаца), и когда я нажимаю, чтобы показать содержимое скрытого div, полоса прокрутки не появляется.
Я также пытался позвонить $('.scroll-pane').jScrollPane();
Как я показываю новый контент (т. е. в случае, если триггеры .show()
на скрытый div
Я $('.scroll-pane').jScrollPane();
), но у меня тоже не было успеха.
кто-нибудь может мне помочь?
спасибо
EDIT:
Я забыл упомянуть структура страницы: у меня div
имеющего class="scroll-pane"
и загружается с загрузкой страницы и содержит небольшие скрытые divs, которые появляются при нажатии на определенные области. Я хотел бы добавить полосу прокрутки в div с областью прокрутки класса, чтобы сделать содержимое показанного div прокручиваемым (прямо сейчас содержимое остается в размере div, но оно не прокручивается, так как не отображается полоса прокрутки jScrollPane).
обновление:
Я пытался поставить $('.scroll-pane').jScrollPane();
in обратный вызов .show()
метод моих дивов и попытался поставить class="scroll-pane"
для тех divs, которые появляются, но снова ничего не отображается (полоса прокрутки не отображается, и div не прокручивается).
2 ответов
проверьте эту демонстрацию, предоставленную разработчиком плагина
http://jscrollpane.kelvinluck.com/invisibles.html
когда элемент впервые показан, вам просто нужно (re)инициализировать scrollpane (или вы даже можете использовать autoReinitialise, если хотите) и его ширина и высота будут рассчитаны правильно.
все, что вам нужно-это
$(function(){
$('.scroll-pane').jScrollPane({autoReinitialise: true});
});
и может быть последней версией плагина
Я предлагаю использовать CSS свойство видимость авто reinitialising. Каждый раз при вызове метода Show (), jscrollpane не reinitialises себя. Это требует времени и влияет на анимацию.
Если вы используете, скажем, слайд..() методы, затем анимация запускается правильно, но прокручиваемый контейнер (и его элементы) появляется немного позже, и это выглядит плохо.
var wrapper = jQuery('#gallery-album-preview-wrapper');
if (wrapper.css("visibility") == "hidden") {
wrapper.css("visibility", "visible").css("display", "none");
}
if (wrapper.is(":hidden")) {
wrapper.slideDown(1000);
} else {
wrapper.slideUp(1000);
}