Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.08.2011, 20:46
Новичок на форуме
Отправить личное сообщение для Miro Посмотреть профиль Найти все сообщения от Miro
 
Регистрация: 10.01.2009
Сообщений: 9

Остановка функции по клику.
Всем доброго вечера.
Есть функция:

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) и по нему (по клику) остановить выполнение функции?

Последний раз редактировалось Miro, 01.09.2011 в 10:38.
Ответить с цитированием
  #2 (permalink)  
Старый 31.08.2011, 22:02
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

код надо вставлять в специально подготовленные для этого теги
[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 = [];
});
Ответить с цитированием
  #3 (permalink)  
Старый 01.09.2011, 10:39
Новичок на форуме
Отправить личное сообщение для Miro Посмотреть профиль Найти все сообщения от Miro
 
Регистрация: 10.01.2009
Сообщений: 9

Спасибо, очередной раз выручаете!
Ответить с цитированием
  #4 (permalink)  
Старый 01.09.2011, 11:02
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

melky,
// на всякий случай очистим массив
timeouts.length = 0;
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
динамическое содержимое функции alfmaster Общие вопросы Javascript 2 28.05.2011 17:10
Остановка выполнения функции Woody jQuery 12 18.01.2011 13:00
arguments вызвавшей функции mister_maxim Общие вопросы Javascript 4 12.10.2010 16:21
Подскажите, как работает простой код (замыкание функции)? Dotod Общие вопросы Javascript 5 02.12.2009 04:03
владелец функции diagnost Общие вопросы Javascript 6 30.10.2008 15:04