Я не вижу причин, по которым ваш код не будет работать при условии, что container
содержит точно один соответствующий элемент ( рабочий пример ). Если есть вероятность, что он может соответствовать более чем одному элементу, у вас будет несколько элементов, совместно использующих один и тот же дескриптор таймера autoplay
, и это станет чем-то вроде беспорядка. Если это так, используйте data
, чтобы сохранить дескриптор фактически для элемента, на котором произошло событие мыши:
container.mouseenter(function(){
$(this).data("autoplay", setTimeout(function() {
slide('next');
}, config.auto));
console.log('play');
}).mouseleave(function(){
var autoplay = $(this).data("autoplay");
if (autoplay) {
clearTimeout(autoplay);
}
console.log('stop');
});
Живой пример
Отдельно, вероятно, стоит очистить autoplay
(где бы вы его ни хранили), когда срабатывает таймер, так что вы знаете, что у вас нет ожидающего таймера.