поэтому у меня есть функция, которая запускает ту же анимацию в div при загрузке любой страницы/раздела.
Я заметил, что в то время как стрелки перемещаются к следующей позиции, и я меняю страницы (через запросы Ajax), стрелки продолжают анимировать с последней позиции.
Я нашел этот вопрос/ответ, но пока решение не работает. Также кажется, что мне придется создать глобальную переменную для каждой из более глубоких переменных, чтобы остановить их? Кажется, я делаю это неправильно :(
clearTimeout(arrow1);
clearTimeout(arrow2);
clearTimeout(arrow3);
clearTimeout(arrow4);
$('#answer_request_walkthrough').text('This shows the person requesting an intro to someone.');
$('#arrow1 .fake_arrow').fadeIn('slow');
$('#answer_request_walkthrough').fadeIn('slow', function() {
// Point Requestor
var arrow1 = setTimeout(function () {
var arrow2 = setTimeout(function () {
// Point Target
$('#answer_request_walkthrough').fadeOut('fast', function() {
$('#answer_request_walkthrough').text('This is the person you know, that they would like to meet.');
$('#answer_request_walkthrough').fadeIn('fast');
});
$('#arrow1 .fake_arrow').fadeOut('slow', function() {
$('#arrow2 .fake_arrow').fadeIn('slow');
});
var arrow3 = setTimeout(function () {
// Point Message
$('#answer_request_walkthrough').fadeOut('fast', function() {
$('#answer_request_walkthrough').text('This is their message detailing why they want to meet the target.');
$('#answer_request_walkthrough').fadeIn('fast');
});
$('#arrow2 .fake_arrow').fadeOut('slow', function() {
$('#arrow3 .fake_arrow').fadeIn('slow');
});
var arrow4 = setTimeout(function () {
// Point Button
$('#answer_request_walkthrough').fadeOut('fast', function() {
$('#answer_request_walkthrough').text('Finally Accept or Deny a message, you remain anonymous if you choose to deny.');
$('#answer_request_walkthrough').fadeIn('fast');
});
$('#arrow3 .fake_arrow').fadeOut('slow', function() {
$('#arrow4 .fake_arrow').fadeIn('slow');
});
}, 4000);
}, 5000);
}, 5000);
}, 5000);
});
Обновление (я вижу что-то странное). Я позволяю анимации начать воспроизведение и вижу стрелку1 = 6, стрелку2 = 10 и т. д. Затем я начинаю свой тест, перемещаясь (вызовы Ajax), и я вижу, что это начинает происходить, и ошибка продолжает происходить:
arrow2 = 7 whoat-dash.js:660
arrow3 = 10 whoat-dash.js:655
arrow4 = 13 whoat-dash.js:650
page timers = 6 whoat-dash.js:602
page timers = 7 whoat-dash.js:602
page timers = 10 whoat-dash.js:602
page timers = 13 whoat-dash.js:602
arrow1 = 21 whoat-dash.js:665
page timers = 21 whoat-dash.js:602
arrow1 = 22 whoat-dash.js:665
page timers = 22 whoat-dash.js:602
arrow1 = 23 whoat-dash.js:665
arrow2 = 24 whoat-dash.js:660
arrow3 = 27 whoat-dash.js:655
arrow4 = 30 whoat-dash.js:650
page timers = 23 whoat-dash.js:602
page timers = 24 whoat-dash.js:602
page timers = 27 whoat-dash.js:602
page timers = 30 whoat-dash.js:602
arrow1 = 36 whoat-dash.js:665
arrow2 = 37 whoat-dash.js:660
arrow3 = 40
Я добавил console.log в код Трэвиса, чтобы видеть, что происходит, когда я загружаю новую страницу и, таким образом, снова запускаю эту функцию анимации:
//check for existence of previous timeouts
if ( typeof($.pageTimers) != "undefined" ) {
//iterate and clear timers if present
for( var i = 0; i < $.pageTimers.length; i++ ) {
clearTimeout($.pageTimers[i]);
console.log('page timers = '+$.pageTimers[i]);
}
}