Очистить setInterval, когда пользователь нажимает на скрипт автопрокрутки - PullRequest
1 голос
/ 17 октября 2011

Я работаю над сценарием автоматической прокрутки, я использую функцию в jquery для перехода к элементу в меню, по которому щелкнули. И я использую setInterval, чтобы щелкнуть каждый элемент в меню. Пока все работает нормально. Но проблема возникает, когда мне нужно остановить setInterval, то есть остановить setInterval, если пользователь щелкнет один из элементов.

У меня есть две проблемы или вопросы для yous :

  1. Это правильный способ сделать автопрокрутку?
  2. Если нет, я был бы очень признателен, если бы вы дали мне небольшой ключ, чтобы сделать это. Если это правильный путь, как узнать, было ли событие click инициировано пользователем или сценарием?

Хорошо. Спасибо за прочтение. Следующий код, который я использую, и, как я уже сказал, работает нормально для циклического перемещения по слайдеру. БОЛЬШОЕ СПАСИБО. Так же, как sidenote: для клиентской петиции я не могу использовать плагин jquery для создания слайдера, поэтому я должен сделать это вручную.

$('.slider-controls a').live('click',function(e){
            moveSlider($(this).attr('href'),e);

            return false;
        });

        function moveSlider(toDiv,elem){
            var nextPos = $(toDiv).position().top;
            $('.slider-total').animate({
                top: -nextPos
            }, 700);

            $('.slider-total div').removeClass('activo');
            $(toDiv).addClass('activo');
        }

        var autoSlider = setInterval(function(){
            var slideNext;

            if ( !($('.slider-total .activo').next().attr('id')) ){
                slideNext = '#' + $('.slider-total .post:first').attr('id');
            } else {
                slideNext = '#' + $('.slider-total .activo').next().attr('id');
            }

            $('a[href='+slideNext+']').click();
        },4000);

1 Ответ

2 голосов
/ 17 октября 2011

Вы можете очистить интервал, вызвав clearInterval() передав идентификатор интервала, возвращенный функцией setInterval().В вашем случае это будет:

clearInterval(autoSlider);
...