Остановка функции по клику.
Всем доброго вечера.
Есть функция:
var sideA = $('aside nav a');
var q=0;
$('.pakages_menu a').each(function(i) {
setTimeout(function() {
$(sideA).removeClass('pm_active');
$(sideA[q]).addClass('pm_active');
q+=1;
}, 1000*i);
});
Переключает class по порядку каждую секунду. Подскажите, как правильно отловить клик на любую из ссылок (aside nav a) и по нему (по клику) остановить выполнение функции? |
код надо вставлять в специально подготовленные для этого теги
[js] ... ваш код... [/js] для решения этой задачи надо где-нибудь сохранять номера таймаутов при их инициализации и по клику на элемент очищать эти таймауты. сделать это в пределах текущей задачи можно так
var sideA = $('aside nav a'),
q = 0,
timeouts = [];
$('.pakages_menu a').each(function(i) {
// setTimeout возвратит ИД таймера, который потом будет использоваться при клике
// не создаем лишних переменных, сразу загоняем это дело в массив.
timeouts.push(setTimeout(function() {
$(sideA).removeClass('pm_active');
$(sideA[q]).addClass('pm_active');
q += 1;
}, 1000 * i));
});
sideA.click(function(){
// обходим массив ИД таймеров
$.each(timeouts, function(i,id){
clearTimeout(id); // очищаем таймаут
});
// на всякий случай очистим массив
timeouts = [];
});
|
Спасибо, очередной раз выручаете! :)
|
melky,
// на всякий случай очистим массив timeouts.length = 0; |
| Часовой пояс GMT +3, время: 00:17. |