mouseenter mouseleave jquery hover и перезапустить проблему с simple.carousel.js

Я внес изменения в файл simple.carousel.js, чтобы остановить карусель при наведении курсора, но у меня возникла проблема с ее перезапуском при выходе из мыши. Код, который я добавил в simple.carousel.js:

// hover stop
if(config.auto!=true)
    $(this).mouseenter(function() {
        config.auto=false;
    }).mouseleave( function() {
        config.auto=true;
    });

Вы можете увидеть полный код/пример здесь с моим дополнением сверху: http://jsfiddle.net/6r6sC/2/

Что-то не так с моей функцией mouseleave?

Не уверен, что это поможет, но я также пробовал следующее, но это тоже не работает:

// hover stop
if(config.auto!=true)
    $(this).mouseenter(function() {
        config.auto=false;
    }).mouseleave( function() {
        setTimeout(function() {
        slide('next');
    }, config.auto);
    });

Любая помощь будет принята с благодарностью, так как это поставило меня в тупик.


person jgrannis    schedule 28.11.2012    source источник
comment
С первым кодом auto вступает в игру только при загрузке страницы.   -  person InfiniDaZa    schedule 29.11.2012


Ответы (2)


Использование true в качестве значения является проблемой, потому что от вашей функции инициализации ожидается false boolean или int.

РЕДАКТИРОВАТЬ 4: http://jsfiddle.net/6r6sC/44/

в слайде() добавлен startAuto()

if(config.auto!=false) {
startAuto();    
}

EDIT3: исправлена ​​проблема с несколькими таймерами и созданы две функции для запуска/остановки автоматического ползунка.

Решение здесь: http://jsfiddle.net/6r6sC/41/

var cachedAuto = config.auto;
var timer = "";

var startAuto = function() {

    config.auto = cachedAuto;
    clearTimeout(timer);

    timer = setTimeout(function() {
         slide('next');
    }, config.auto);   
}

var stopAuto = function() {
    clearTimeout(timer);
    config.auto = false;
}

if(config.auto!=false) {
    // start auto sliding
    startAuto();    

    // pause/start on mouse events            
    $(this).on("mouseenter", function(event){
        stopAuto();
    }).on("mouseleave", function(event){
        startAuto();
    });
}
person anderssonola    schedule 28.11.2012
comment
Хм, кажется, работает хорошо, но как только вы начинаете двигать мышь вперед и назад и позволяете ей перезапуститься, она начинает немного сходить с ума (и быстро). Вы видите, что я имею в виду? - person jgrannis; 29.11.2012
comment
извините, обновил jsfiddle, тайм-аут сработал дважды. jsfiddle.net/6r6sC/15 - person anderssonola; 29.11.2012
comment
Извините, какая часть была обновлена? установить время ожидания? Код выглядит так же для меня. Спасибо за вашу помощь. - person jgrannis; 29.11.2012
comment
Хм, я все еще получаю сумасшедшие быстрые и медленные вещи. Особенно, когда вы пытаетесь переключаться с помощью полей нумерации страниц. - person jgrannis; 29.11.2012
comment
Я заметил ту же проблему, что и раньше, в Firefox, IE 8 и 9 и Chrome. - person jgrannis; 29.11.2012
comment
Привет, SoderSlatt, любое обновление вашего кода. Отлично работает в первый раз, но как только вы остаетесь на странице, она начинает очень быстро переключаться между слайдами. Надеюсь, вы можете помочь. Еще раз спасибо за вашу помощь! - person jgrannis; 30.11.2012
comment
@jgrannis извините за поздний ответ, но я был занят работой. Я обновил ссылку jsfiddle и код для запуска/остановки автоматического ползунка при наведении. - person anderssonola; 01.12.2012
comment
вроде до сих пор не работает. Все еще начинает ускоряться, когда вы наводите/снимаете курсор, а затем оставляете его на цикл. Еще раз спасибо за всю вашу помощь, но, возможно, мне придется положить это в постель как нерешенное. - person jgrannis; 04.12.2012

Хорошо, я провел небольшое исследование и тестирование и заменил «mouseleave» на «mouseout», это работает! Так что попробуй.

 // hover stop
 if(config.auto!=true)
$(this).mouseenter(function() {
    config.auto=false;
}).mouseout( function() {
    config.auto=true;
});
person InfiniDaZa    schedule 28.11.2012
comment
Голосование против, не работает при отключении мыши, ползунок вращается с интервалом 0 мс => jsfiddle.net/6r6sC/ 13 - person anderssonola; 29.11.2012