У меня есть два списка - один с div и один с элементами li, которые мне нужны для вертикальной прокрутки на кнопках p и down. Проблема в том, что он не очень удобен для пользователя и имеет сбои в браузерах, таких как IE ... Есть ли способ его улучшить?JS, Jquery вертикальная прокрутка divs и li на кнопках вверх/вниз - нажмите
<div class="selectOpt">
<div><img class="topScroll" src="arrowup.png" title="Up"></img></div>
<div class="list"><ul class="choose"></ul></div>
<div><img class="bottomScroll" src="arrowdown.png" title="Down"></img></div>
</div>
заполняет его:
$(".choose").append('<li class="'+list[i]+'Item" value="'+item[1]+'">'+item[1]+'</li>');
И я использую этот код для прокрутки:
$(function scrollDivs(){ $('.topScroll').on('click', function(){
var element = $(this).parents('.selectOpt').children('.list').children('ul');
if (parseInt(element.css('top')) <= -20){
element.css('top', "+="+ parseInt(element.children('li').css('height').replace(/[A-Za-z$-]/g, "")*2.1).toString()+"px").css({'transition': 'all 0.4s ease-out' });
} //else $('.topScroll').css('opacity', '0.3');
});
$('.bottomScroll').on('click', function() {
var element = $(this).parents('.selectOpt').children('.list').children('ul');
if (parseInt(element.css('top')) >= (parseInt(element.parent().css('height')) - parseInt(element.css('height')))){
element.css('top', "-="+ parseInt(element.children('li').css('height').replace(/[A-Za-z$-]/g, "")*2.09).toString()+"px").css({'transition': 'all 0.4s ease-out'});
} //else $('.bottomScroll').css('opacity', '0.3');
});
});
И есть DIV с дивами прокручивать:
<div class="schedule"></div>
Я заполняю его: ..
.forEach(function(raw){
$('.schedule").append('<div class="eRaw"><span class="pe"></span><span class="time"></span><span class="date"></span></div>');});
прокручивает дивы с:
var step=10;
var scrolling=false;
$(".scrollUp").bind("click",function(event) {event.preventDefault();
$(".schedule").animate({scrollTop: "-=" +step+ "px"});
}).bind("mousedown",function(event) {scrolling=true;scrollContent("up");
}).bind("mouseup",function(event) {scrolling=false;});
$(".scrollDown").bind("click",function(event) {event.preventDefault();
$(".schedule").animate({scrollTop: "+=" +step+ "px"});
}).bind("mousedown",function(event) {scrolling=true;scrollContent("down");
}).bind("mouseup",function(event) {scrolling=false;});
function scrollContent(direction) {var amount = (direction === "up" ? "-=1px" : "+=1px");
$(".schedule").animate({scrollTop:amount}, 1, function(){if(scrolling){scrollContent(direction);}});
}
$(".schedule").on('mousewheel', function(event, delta) {event.preventDefault();
});