Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.04.2015, 16:25
Аватар для Karandasheg
Интересующийся
Отправить личное сообщение для Karandasheg Посмотреть профиль Найти все сообщения от Karandasheg
 
Регистрация: 19.10.2011
Сообщений: 16

Перезапуск JavaScript функции по click
Здравствуйте!
На сайте установлен слайдер Roundabout

вызывается таким набором параметров:
$(document).ready(function() {
    $('#wrap_slider .slider ul').css("width","900px").roundabout({
                    autoplay: true,
                    duration: 500,
                    autoplayDuration: 3000,
                    autoplayPauseOnHover: true
    });
});


Необходимо, что бы автоплей останавливался не только по наведении на область слайдера, но и при первом клике по кнопка Назад или Вперед и включался обратно только после перезагрузки страницы.

Единсвенное что пришло в голову - по нажатию на одну из стрелок заменять значение автоплей на фалсе и перезапускать инициализацию слайдера.

Вот функции, которые отвечают за стоп автоплея при наведении. может их как то можно переделать для click? Я в этом совсем не силен

// autoplay pause on hover
                    if (settings.autoplayPauseOnHover) {
                        self
                            .bind("mouseenter.roundabout.autoplay", function() {
                                methods.stopAutoplay.apply(self, [true]);
                            })
                            .bind("mouseleave.roundabout.autoplay", function() {
                                methods.startAutoplay.apply(self);
                            });
                    }



// autoplay
        // -----------------------------------------------------------------------

        // startAutoplay
        // starts autoplaying this roundabout
        startAutoplay: function(callback) {
            return this
                .each(function() {
                    var self = $(this),
                        data = self.data("roundabout");

                    callback = callback || data.autoplayCallback || function() {};

                    clearInterval(data.autoplayInterval);
                    data.autoplayInterval = setInterval(function() {
                        methods.animateToNextChild.apply(self, [callback]);
                    }, data.autoplayDuration);
                    data.autoplayIsRunning = true;

                    self.trigger("autoplayStart");
                });
        },


        // stopAutoplay
        // stops autoplaying this roundabout
        stopAutoplay: function(keepAutoplayBindings) {
            return this
                .each(function() {
                    clearInterval($(this).data("roundabout").autoplayInterval);
                    $(this).data("roundabout").autoplayInterval = null;
                    $(this).data("roundabout").autoplayIsRunning = false;

                    // this will prevent autoplayPauseOnHover from restarting autoplay
                    if (!keepAutoplayBindings) {
                        $(this).unbind(".autoplay");
                    }

                    $(this).trigger("autoplayStop");
                });
        },


        // toggleAutoplay
        // toggles autoplay pause/resume
        toggleAutoplay: function(callback) {
            return this
                .each(function() {
                    var self = $(this),
                        data = self.data("roundabout");

                    callback = callback || data.autoplayCallback || function() {};

                    if (!methods.isAutoplaying.apply($(this))) {
                        methods.startAutoplay.apply($(this), [callback]);
                    } else {
                        methods.stopAutoplay.apply($(this), [callback]);
                    }
                });
        },


        // isAutoplaying
        // is this roundabout currently autoplaying?
        isAutoplaying: function() {
            return (this.data("roundabout").autoplayIsRunning);
        },


        // changeAutoplayDuration
        // stops the autoplay, changes the duration, restarts autoplay
        changeAutoplayDuration: function(duration) {
            return this
                .each(function() {
                    var self = $(this),
                        data = self.data("roundabout");

                    data.autoplayDuration = duration;

                    if (methods.isAutoplaying.apply(self)) {
                        methods.stopAutoplay.apply(self);
                        setTimeout(function() {
                            methods.startAutoplay.apply(self);
                        }, 10);
                    }
                });
        },


Спасибо за ответы!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
javascript запуск функции alexandr2006 Общие вопросы Javascript 4 15.07.2013 19:16
Интерпретатор Java на JS kobezzza Оффтопик 24 11.10.2012 18:32
помогите преобразовать javascript в jquery Rayzor jQuery 1 13.09.2012 12:00
javascript on click или event - Контроль действия пользователя. Ffendlix Events/DOM/Window 3 12.09.2012 12:28