Пауза цикла jQuery при наведении курсора на следующий/предыдущий

Я новичок в цикле jquery, поэтому заранее извиняюсь, если это просто глупый вопрос. Я настроил слайд-шоу на своем сайте, и все работает нормально. Однако... мое слайд-шоу настроено на паузу при наведении курсора на изображение, когда я действительно хочу сделать паузу при наведении курсора на кнопки «Далее» или «Предыдущий». Я предполагаю, что это очень просто, но я искал все и не могу найти ответ.

Вот код, который я сейчас использую:

jQuery:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script type="text/javascript" src="jquery.cycle.all.js"></script>
<script type="text/javascript">
$(function() {
$('#s2').cycle({ 
fx: 'fade', 
speed: 800,
timeout: 4000, 
next: '#next2', 
prev: '#prev2',
after: onAfter,
fastOnEvent: true,
pause: 1 
});
});
function onAfter(curr,next,opts) {
var caption = 'Photo ' + (opts.currSlide + 1) + ' of ' + opts.slideCount;
$('#caption').html(caption);
}
</script>


Связанный HTML:

<div id="s2" class="pics">
<a href="coral_natural_stone_1lg.jpg"><img src="coral_natural_stone_1.jpg" width="1000" height="450" alt="Palm Beach Cast Stone - Coral and Natural Stone" /></a>
<img src="coral_natural_stone_2.jpg" width="1000" height="450" alt="Palm Beach Cast Stone - Coral and Natural Stone" />
<img src="coral_natural_stone_3.jpg" width="1000" height="450" alt="Palm Beach Cast Stone - Coral and Natural Stone" />
<img src="coral_natural_stone_4.jpg" width="1000" height="450" alt="Palm Beach Cast Stone - Coral and Natural Stone" />
<img src="coral_natural_stone_5.jpg" width="1000" height="450" alt="Palm Beach Cast Stone - Coral and Natural Stone" />
<img src="coral_natural_stone_6.jpg" width="1000" height="450" alt="Palm Beach Cast Stone - Coral and Natural Stone" />
<img src="coral_natural_stone_7.jpg" width="1000" height="450" alt="Palm Beach Cast Stone - Coral and Natural Stone" />
</div>

<p id="caption"></p>

<div class="nav"><a id="prev2" href="#"><img src="prevbttn.jpg" width="30" height="30" alt="previous" /></a><img src="spacer.gif" width="10" height="10" alt="spacer" /><a id="next2" href="#"><img src="nextbttn.jpg" width="30" height="30" alt="next" /></a></div>

И соответствующий CSS:

.pics {  
width:   1000px;  
height:  450px;  
padding: 0;  
margin:  0;  
} 

.pics img {  
padding: 0px;  
border:  none;  
background-color: #ffffff;  
height:  450px;  
width:   1000px;  
top:  0; 
left: 0;
}

#caption {
font-family: Arial, Helvetica, sans-serif;
font-size: 75%;
color:#2769b5;
}

Любая помощь, которую кто-либо может оказать, будет оценена больше, чем вы можете себе представить. Я знаю, что это, вероятно, просто сделать, но я, честно говоря, исчерпал свои ресурсы (и около 15 страниц результатов Google!). Заранее благодарим за любую помощь, которую вы можете предложить.

Тереза

ДОБАВЛЕНО 13.01:

Пересмотрел мой код, как указано ниже, но все еще не работает (приведенный ниже jsfiddle работает отлично, именно то, что я ищу, но даже с прямой копией/вставкой, которая не работает с моей стороны). Что-то очевидное, я уверен, но с трудом. Вот мой пересмотренный код js и соответствующая информация в моем заголовке (html и css остались прежними):

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="jquery.cycle.all.js"></script>
<script type="text/javascript">
$(function() {
$('#s2').cycle({ 
fx: 'fade', 
speed: 800,
timeout: 4000, 
next: '#next2', 
prev: '#prev2',
after: onAfter,
fastOnEvent: true
});
});
function onAfter(curr,next,opts) {
var caption = 'Photo ' + (opts.currSlide + 1) + ' of ' + opts.slideCount;
$('#caption').html(caption);
}

$('#next2, #prev2').hover( 
function() { 
    $('#s2').cycle('pause'); 
}, 
function() { 
    $('#s2').cycle('resume'); 
} 
);

</script>

person Teresa Thayer    schedule 08.01.2012    source источник


Ответы (2)


Во-первых, удалите pause: 1 из опций — это то, что заставляет его приостанавливаться при наведении курсора на изображение. Потом:

Чтобы сделать паузу, вы можете использовать:

$('#s2').cycle('pause')

и для возобновления вы можете использовать:

$('#s2').cycle('resume')

Этот код должен достичь того, что вы хотите сделать:

$('#next2, #prev2').hover( 
    function() { 
        $('#s2').cycle('pause'); 
    }, 
    function() { 
        $('#s2').cycle('resume'); 
    } 
);
person chrisn    schedule 08.01.2012
comment
Я работал над примером jsfiddle и увидел, что Крис уже ответил. Чтобы я не добавлял новый ответ, jsfiddle находится здесь. - person flynfish; 08.01.2012
comment
Именно то, что я хочу, чтобы он делал. Ваш jsfiddle работает отлично, он прост и имеет смысл. НО, у меня это не работает, и я не могу понять, что я делаю неправильно. Прямое копирование/вставка на js, и все html и css просто и без изменений. Провел последние два часа, пытаясь понять, что я делаю неправильно, и я уверен, что это, вероятно, будет что-то простое и очевидное. Я не могу поместить свой новый отредактированный код в это поле, поэтому я отредактирую свой вопрос выше и размещу его там. Я буду плакать от радости, если у меня получится! Любая помощь приветствуется. - person Teresa Thayer; 14.01.2012
comment
Вы не можете безопасно манипулировать страницей, пока документ не будет «готов». Я создал обновление jsFiddle от @flynfish, чтобы отразить правильный код. - person chrisn; 14.01.2012
comment
Большое спасибо вам обоим за помощь! Он работает именно так, как должен, и в процессе я кое-чему научился. Какое прекрасное чувство, когда что-то наконец-то работает. (Мои соседи, вероятно, услышали мой вздох облегчения, что намного лучше, чем то, что они слышали раньше!). Еще раз спасибо, не могу передать вам, насколько я ценю помощь. - person Teresa Thayer; 14.01.2012
comment
@TeresaThayer Рад, что смог помочь! Если мой ответ решил вашу проблему, отметьте его как принятое решение. - person chrisn; 14.01.2012

для цикла2, приостановленного при наведении, вам нужно добавить только:

...
data-cycle-pause-on-hover: "#s2",
...
person NotFound Life    schedule 20.08.2014