2012-06-06 4 views
1

Так у меня есть этот код:JQuery: пауза слайд-шоу по наведению

$(document).ready(function(){ 
    $("#slideshow > div:gt(0)").hide(); 
    setInterval(function() { 
    $("#slideshow > div:first") 
      .fadeOut(1000) 
      .next() 
      .fadeIn(1000) 
      .end() 
      .appendTo("#slideshow"); 
}, 3000); 
}); 

, который работает 100% штраф .. где я могу добавить функцию .hover() для слайд-шоу, чтобы сделать паузу при наведении курсора мыши ??

ответ

5

Методы setInterval() возвращает интервал ID, который можно использовать для очистки текущего интервала/таймаута с использованием clearInterval().

Вы можете сделать что-то вроде этого:

$(document).ready(function() { 

    var timer; 

    $("#slideshow > div:gt(0)").hide(); 

    $("#slideshow") 
     // when mouse enters, clear the timer if it has been set 
     .mouseenter(function() { 
      if (timer) { clearInterval(timer) } 
     }) 
     // when mouse goes out, start the slideshow 
     .mouseleave(function() { 
      timer = setInterval(function() { 
       $("#slideshow > div:first") 
        .fadeOut(1000) 
        .next() 
        .fadeIn(1000) 
        .end() 
        .appendTo("#slideshow"); 
      }, 3000); 
     }) 
     // trigger mouseleave for initial slideshow starting 
     .mouseleave(); 

});​ 

DEMO

+0

прибил его !! огромное спасибо!! =) – BDdL

+0

Привет! Как это использовать, если я хочу только приостановить интервал? Не очистить его и сбросить. – maverick

+0

Вы можете использовать логическое значение, которое вы устанавливаете на 'False' в' mouseenter'. В 'mouseleave' вы можете установить его обратно в' True', а в 'setInterval' возвращать напрямую, если логическое значение' False'. –

Смежные вопросы