Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как записать изменение значения? (https://javascript.ru/forum/jquery/33129-kak-zapisat-izmenenie-znacheniya.html)

Alemikh 11.11.2012 18:05

Как записать изменение значения?
 
Здравствуйте! Я новичок.
Копаюсь с jquery tinyscrollbar и нашел такой баг:
если блок с содержимым меньше прокручиваемой области, то убирается полоса прокрутки, однако не убирается возможность прокрутить колесом мыши содержимое (содержимое при прокрутке уезжает вверх, оставляя под собой пустое место).
Пытался разобраться в коде этого плагина, и примерно понял, как исправить баг, но не знаю, как это записать:
Код:

$.tiny.scrollbar = {
options: {       
        axis: 'y', // vertical or horizontal scrollbar? ( x || y ).
        wheel: 90,  //how many pixels must the mouswheel scroll at a time.
        scroll: true, //enable or disable the mousewheel;
        size: 'auto', //set the size of the scrollbar to auto or a fixed number.
        sizethumb: 'auto' //set the size of the thumb to auto or a fixed number.
}
};

Параметр scroll определяет возможность прокручивать область колесом. Я так понял, надо при инициализации и обновлении проверять, меньше ли область с содержимым области прокрутки и если да, изменять значение scroll.

Вот инициализация и обновление:
Код:

function initialize() {       
        oSelf.update();
        setEvents();
        return oSelf;
}
this.update = function(sScroll){
        oViewport[options.axis] = oViewport.obj[0]['offset'+ sSize];
        oContent[options.axis] = oContent.obj[0]['scroll'+ sSize];
        oContent.ratio = oViewport[options.axis] / oContent[options.axis];
        oScrollbar.obj.toggleClass('disable', oContent.ratio >= 1);
                       
        oTrack[options.axis] = options.size == 'auto' ? oViewport[options.axis] : options.size;
        oThumb[options.axis] = Math.min(oTrack[options.axis], Math.max(0, ( options.sizethumb == 'auto' ? (oTrack[options.axis] * oContent.ratio) : options.sizethumb )));
        oScrollbar.ratio = options.sizethumb == 'auto' ? (oContent[options.axis] / oTrack[options.axis]) : (oContent[options.axis] - oViewport[options.axis]) / (oTrack[options.axis] - oThumb[options.axis]);
        iScroll = (sScroll == 'relative' && oContent.ratio <= 1) ? Math.min((oContent[options.axis] - oViewport[options.axis]), Math.max(0, iScroll)) : 0;
        iScroll = (sScroll == 'bottom' && oContent.ratio <= 1) ? (oContent[options.axis] - oViewport[options.axis]) : isNaN(parseInt(sScroll)) ? iScroll : parseInt(sScroll);
        setSize();
};

Подскажите пожалуйста, куда что записать (изначально в коде уже есть проверка того, какая область больше:
Код:

oViewport[options.axis] = oViewport.obj[0]['offset'+ sSize];
oContent[options.axis] = oContent.obj[0]['scroll'+ sSize];
oContent.ratio = oViewport[options.axis] / oContent[options.axis];

)
Спасибо!
Ссылка на плагин

Alemikh 13.11.2012 18:23

Up!


Часовой пояс GMT +3, время: 19:32.