Jquery Nice прокрутка не работает

Я использую красивую полосу прокрутки Jquery для div, но когда содержимое div динамически увеличивается, полоса прокрутки не отображается. Полоса прокрутки по умолчанию в Windows работает нормально, если я удаляю красивую прокрутку. Может ли кто-нибудь помочь мне решить эту проблему?

HTML

<div id="div-to-scroll">
</div>

Скрипт

$(document).ready(function(e) {
    var nice = $("#div-to-scroll").getNiceScroll();
    $("#div-to-scroll").niceScroll();
    $("#div-to-scroll").getNiceScroll().resize();
});

это мой пример кода.


person gaurang171    schedule 08.08.2012    source источник
comment
извини ;-) я узнал текущее состояние кода :-)   -  person stetro    schedule 08.08.2012
comment
хм, должно работать с простым $(#div-to-scroll).niceScroll(); ... странный   -  person stetro    schedule 08.08.2012
comment
идентификатор или класс div-to-scroll? ;-)   -  person stetro    schedule 08.08.2012
comment
извините, это идентификатор, я забыл его изменить   -  person gaurang171    schedule 08.08.2012


Ответы (6)


Наконец это работает для меня.

$("#div-to-scroll").scroll(function(){
  $("#div-to-scroll").getNiceScroll().resize();
});
person gaurang171    schedule 09.08.2012

для меня работает только с

$("#div-to-scroll").mouseover(function() {
    $("#div-to-scroll").getNiceScroll().resize();
});
person Karolis Gerbauskas    schedule 05.12.2012
comment
Откуда взялся mouseover? - person Blazemonger; 05.12.2012

ОБНОВЛЕНИЕ: найдена новая функция!

 var setScroll = function(i) {
        if($(i).length>0)
        $(i).niceScroll().updateScrollBar();
} 

Вызовите эту функцию для обновления niceScroll

setScroll(".classWithNiceScroll");
person Code Spy    schedule 01.02.2014

Некоторые возможные причины:
1- Возможно, вы забыли указать высоту вашего div. зафиксируйте высоту вашего div.
2- также, если ваш div плавает по ширине, исправьте и эту ширину.
Помните, что ваш DIV STYLE должен иметь: overflow-y: hidden;
UPDATE< /strong>
попробуйте использовать функцию resize() каждый раз при прокрутке вниз:

$("div-to-scroll").slideDown(function(){
  $("div-to-scroll").getNiceScroll().resize();
});
person osyan    schedule 08.08.2012
comment
Да, это все, что я сделал. дело в том, что при загрузке окна он работает, но после того, как я начинаю добавлять контент, он не работает. - person gaurang171; 08.08.2012
comment
@keyuratcodebins.com что происходит после добавления контента? он останавливает прокрутку или показывает весь контент одновременно? - person osyan; 08.08.2012
comment
@keyuratcodebins.com попробуйте использовать функцию resize() каждый раз, когда вы прокручиваете вниз - person osyan; 08.08.2012
comment
У меня та же проблема, я обнаружил, что если я переключаю вкладки в хроме и возвращаюсь, он начинает работать. Любые идеи? - person Mark McCook; 10.10.2012

Сделай это:

// Scroll X Axis 
$("#mydiv").getNiceScroll()[0].doScrollLeft(x, duration);
// Scroll Y Axis - 
$("#mydiv").getNiceScroll()[0].doScrollTop(y, duration);

or:

// Scroll X Axis 
$("#mydiv").getNiceScroll(0).doScrollLeft(x, duration);
// Scroll Y Axis - 
$("#mydiv").getNiceScroll(0).doScrollTop(y, duration);

Примечание [0] после getNiceScroll()

person Sandeep    schedule 13.10.2014

$("html").mouseover(function() {
    $("html").getNiceScroll().resize();
});

Чтобы получить полосу прокрутки на все тело

person Banty Roy    schedule 17.07.2013
comment
Во 2-й строке есть дополнительный # . - person Raptor; 25.08.2015
comment
@Raptor Да, просто следуйте синтаксису. (Селектор здесь не имеет значения) - person Banty Roy; 25.08.2015