2010-11-08 4 views
1

Я хочу приостановить показ слайд-шоу примерно на 4 секунды, пока не возобновится слайд. Это возможно? Я попытался сделать это сам со следующим кодом, но он, похоже, не работает.JQuery Cycle Pausing

$(document).ready(function() { 
     $('#homeSlideshowWrapper').cycle({ 
      fx: 'fade', 
      timeout: 4000, 
      after: onBefore 
     }); 

     function onBefore() { 
      $('#homeSlideshowWrapper').cycle('pause') 
      $('#homeSlideshowWrapper').delay(5000).cycle('resume') 

     } }); 

Благодаря

Люк Stratton

ответ

0

Вы можете добиться этого с SetTimeout?

E.g.

function onBefore() { 
    $('#homeSlideshowWrapper').cycle('pause'); 
    $('selector-for-active-slide').css('visibility', 'hidden'); // If you wish the slide to disappear, not sure what you mean by "no slide displayed before resuming" 
    setTimeout(resumeSlideshow, 5000); 
} 
function resumeSlideshow() { 
    $('#homeSlideshowWrapper').cycle('resume'); 
    $('selector-for-active-slide').css('visibility', 'visible'); 
} 
1

Прежде всего, вам не хватает точек с запятой для обеих команд в функции onbefore. Во-вторых, вы объявляете функцию внутри document.ready, где она действительно не должна быть в какой-либо функции. В-третьих, вы должны использовать .css (display, 'none'), чтобы скрыть слайд-шоу, пока он приостановлен (если это то, что вы подразумеваете под отсутствием слайда перед возобновлением. Если не избавиться от hide() и show() на конец строки). Попробуйте следующее:

$(document).ready(function() { 
    var onBefore= function() { 
     $('#homeSlideshowWrapper').cycle('pause').hide(); 
     $('#homeSlideshowWrapper').delay(5000).cycle('resume').show(); 
    }; 

    $('#homeSlideshowWrapper').cycle({ 
     fx: 'fade', 
     timeout: 4000, 
     after: onBefore 
    }); 

}); 

Это может быть не идеально, но должно быть немного лучше.