Я пытаюсь заменить собственную полосу прокрутки браузера, используя функцию rangeinput JqueryTools.
Вот пример страницы: http://conceptionkit.co.uk/ck/support
Страницаимеет несколько прокручиваемых элементов div со следующей структурой html:
<div class="scrollwrap"><!-- scrollwrap doesn't move and has overflow:hidden -->
<div class="scroll"><!- this is the scrollable pane --></div>
<!-- this is the rangecontrol that is converted into a
vertical scrollbar by the script -->
<input class="hide" type="range" max="300" step="1" />
</div>
Для одного экземпляра на странице работает следующий код:
var scroll = jQuery(".scroll");
// initialize rangeinput
jQuery(":range").rangeinput({
// slide the DIV along with the range using jQuery css() method
onSlide: function(ev, step) { scroll.css({bottom: -step});},
// display progressbar
progress: true,
// initial value. also sets the DIV initial scroll position
value: 100,
// this is called when the slider is clicked. we animate the DIV
change: function(e, i) { scroll.animate({bottom: -i}, "fast");},
// disable drag handle animation when when slider is clicked
speed: 0
});
Однако, когда я пытаюсь обобщить скрипт,это не работаетЯ думаю, что проблема заключается в наличии нескольких экземпляров переменной с именем "прокрутка".Может быть, они конфликтуют?
Вот моя попытка сценария разместить полосы прокрутки во всех экземплярах прокрутки на странице.Так как я должен сопоставить каждый диапазон ввода с правильной панелью, он перебирает jQuery (". Scrollwrap"). Each () и находит панель прокрутки и элемент управления диапазоном в каждой из них:
// default style for .scroll is overflow:auto for no-js browsers.
// must turn that off first
jQuery(".scroll").css('overflow','hidden');
jQuery(".scrollwrap").css('overflow','hidden').each(function(index){
// Inject range control element
jQuery(this).append('<input class="hide" type="range" max="300" step="1" />');
var scroll = jQuery(".scroll",this);
// initialize rangeinput
jQuery(":range", this).rangeinput({
// slide the DIV along with the range using jQuery css() method
onSlide: function(ev, step) { scroll.css({top: -step});},
// display progressbar
progress: true,
// initial value. also sets the DIV initial scroll position
value: 100,
// this is called when the slider is clicked. we animate the DIV
change: function(e, i) { scroll.animate({top: -i}, "fast");},
// disable drag handle animation when when slider is clicked
speed: 0
});
});
Приведенный выше скрипт не генерирует никаких ошибок, он создает элемент управления ползунком, но перемещение слайда не перемещает связанный элемент .scroll.
Что я здесь не так делаю?