Показать сообщение отдельно
  #4 (permalink)  
Старый 29.09.2019, 00:52
Интересующийся
Отправить личное сообщение для imhateb Посмотреть профиль Найти все сообщения от imhateb
 
Регистрация: 16.09.2013
Сообщений: 28

Сообщение от imhateb Посмотреть сообщение
Неа, не работает ((
Останавливаться останавливается, но так и не запускается при возвращении в область видимости.

Ошибка была в написании самой функции. Надо было сделать вот так:

function paginator() {    
    $('.sidebar .paginator div').click(function(){
        if(!$(this).hasClass('act_pagi')) {
            var act_id = parseInt($(this).attr('id').replace(/\D+/g,""));            
            pagination(act_id);
        }
    });
    $('.sidebar').mouseenter(function(){stopInterval();}); // остановка автоматического перелистывания при наведении мышки
    $('.sidebar').mouseleave(function(){startInterval();animate_bar();}); // запуск автоматического перелистывания когда наведения мышки нет
    
    animate_bar();
    startInterval();
}

var interval, timer = 7300;

function startInterval() {
    interval = setInterval(function(){   
        animate_bar();
        var act_id = parseInt($('.sidebar .paginator div.act_pagi').attr('id').replace(/\D+/g,""));
        var pagi = $('#sb_paginator div').length;
        if (act_id < pagi) {act_id++} else {act_id = 1};            
        pagination(act_id);        
    },timer);
};


function pagination(act_id) {
    $('.sidebar .paginator div').removeClass('act_pagi');
    $('.sidebar .paginator div#sb_p'+act_id).addClass('act_pagi');
    $('.sb_content').removeClass('show');
    $('.sb_content#sb'+act_id).addClass('show');
    $('.section1 .back').removeClass('show');   
    $('.section1 .back#back'+act_id).addClass('show');   
};

function stopInterval() {clearInterval(interval); $('.progress_bar span').stop().css('width', '0px');}
function animate_bar() {$('.progress_bar span').animate({width: "100%"},timer, function(){$(this).css("width", "0px");});};


И запускать только paginator()
$(document).ready(function() {
    if ($('div').is('.sidebar')) {paginator();}
});

$(document).on('scroll', function () {    
    if ($('div').is('.sidebar')) {stopInterval(); if (viewport($('.section1')) == 'visible') paginator();}
});


Всем спасибо за помощь ))
Ответить с цитированием