Остановка функции по клику.
Всем доброго вечера.
Есть функция: 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, время: 14:31. |