Скролл к секциям, совместно со скроллом слайдов
Всем привет, есть код плавной прокрутки к секциям, по сути прокручивает только 3 секции со всей страницы, но на второй секции есть слайдер, когда прокручиваешь к слайдеру, сначала должны пролистать слайды, только потом скролл должен идти ниже, код со скроллом работает без проблем, проблема возникла в следствии прикрутки к этому слайдера, проблема в том что иногда слайдер начинает прокручиваться везде, то есть не важно на какой секции мы находимся, так же вторая проблема что почему то после первой прокрутки всех слайдов, обработчик почему-то считает одно прокручивание колеса за два сразу и пропускает средний слайд, прикладываю сам js код, там вроде и без html все понятно,основной вопрос где обработчик прокрутки колеса мыши может работать некорректно?
// Определяю переменные с высотой блоков
var mainH = $('#main').offset().top,
productsH = $('#products').offset().top,
servicesH = $('#services').offset().top,
aboutH = $('#about').offset().top,
scrollOffset = $(window).scrollTop(); // Высота для сравнения
// Устанавливаю классы для карусели (Вселго 3 слайда)
$('.products__slider').on('changed.owl.carousel', function(e) {
if (e.item.index == 0) {
$('.owl-item').addClass('first');
$('.owl-item').removeClass('last');
} else if (e.item.index == 2) {
$('.owl-item').addClass('last');
$('.owl-item').removeClass('first');
}
});
// Скролл колесом мыши
$(window).bind('mousewheel', function(event) {
if (event.originalEvent.wheelDelta >= 0) {
if (scrollOffset == productsH) {
console.log('скролим слайдер вверх');
scrollSliderTop();
} else if (scrollOffset == servicesH) {
console.log('скролим к productsH');
scrollTo(productsH);
}
}
else {
if (scrollOffset == mainH) {
console.log('скролим к productsH');
scrollTo(productsH);
} else if (scrollOffset == productsH) {
console.log('скролим слайдер вниз');
scrollSliderBottom();
} else if (scrollOffset == servicesH) {
console.log('скролим к about');
scrollTo(aboutH);
}
}
});
// Функция плавного скролла
function scrollTo(section) {
var blcokOffset = section;
$("html, body").animate({
scrollTop: blcokOffset
});
}
// Функция скролла слайдов
function scrollSliderTop() {
if ($('.products__slider .owl-item').hasClass('last')) {
console.log('has last');
$('body').css('overflow', 'hidden');
owlOne.on('mousewheel', '.owl-stage', function (e) {
if (e.deltaY > 0) {
owlOne.trigger('prev.owl');
}
e.preventDefault();
}); // Если проскролили к первому слайду идем на сецию выше
} else if ($('.products__slider .owl-item').hasClass('first')) {
console.log('hasnt last');
$('body').css('overflow', 'auto');
console.log('скролим к mainH');
scrollTo(mainH);
}
}
function scrollSliderBottom() {
if ($('.products__slider .owl-item').hasClass('first')) {
console.log('has first');
$('body').css('overflow', 'hidden');
owlOne.on('mousewheel', '.owl-stage', function (e) {
if (e.deltaY >0 ) {
owlOne.trigger('next.owl');
}
e.preventDefault();
}); // Если проскролили к последниму слайду идем на сецию ниже
} else if ($('.products__slider .owl-item').hasClass('last')) {
console.log('hasnt first');
$('body').css('overflow', 'auto');
console.log('скролим к servicesH');
scrollTo(servicesH);
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>