прекратить мигать событие - PullRequest
0 голосов
/ 09 декабря 2011

что мне нужно это:

нажмите на кнопку и остановите мигание.

Вот как я пытаюсь это сделать:

var blink = function(){
    $('#blinker').toggle();
};
setInterval(blink, 800);

$("#stopBlink").click(function(){
   clearInterval(blink); 
});

и не работает, чего мне не хватает?

Рабочий пример

Спасибо!

Ответы [ 5 ]

2 голосов
/ 09 декабря 2011

Все, что вам нужно сделать, это:

blink_flag = setInterval(blink, 800);

$("#stopBlink").click(function(){
   clearInterval(blink_flag); 
});

Я бы рекомендовал добавить:

$('#blinker').show();

После clearInterval.

1 голос
/ 09 декабря 2011

Вы пытаетесь остановить функцию переключения мерцания, в то время как вы фактически должны сохранить интервал в переменной и вызвать clearInterval для этой переменной, так как clearInterval ожидает экземпляр setInterval объект в качестве параметра: https://developer.mozilla.org/en/DOM/window.clearTimeout

http://jsfiddle.net/HTRZk/22/:

var blink = setInterval(function(){
    $('#blinker').toggle()}
, 800);

$("#stopBlink").click(function(){
   clearInterval(blink); 
});

Кроме того, вам необходимо убедиться, что при прекращении мигания, когда текст скрыт, вы снова показываете элемент. В событие .click добавьте:

$('#blinker').show();
1 голос
/ 09 декабря 2011

Вы пытаетесь использовать clearInterval в функции.Это не сработает, потому что clearInterval принимает уникальный идентификатор интервала в качестве параметра.Этот параметр будет возвращен функцией setInterval.Если вы сохраните уникальный идентификатор в переменной и передадите его в clearInterval, он будет работать нормально.Попробуйте это:

var blink = function(){
    $('#blinker').toggle();
};
var blinkID = setInterval(blink, 800);

$("#stopBlink").click(function(){
   clearInterval(blinkID); 
});

MDN

Демо

1 голос
/ 09 декабря 2011

Я думаю, что вы используете clearInterval() неправильно. Параметр для clearInterval() - это идентификатор, созданный setInterval(), и вы добавляете функцию, используемую setInterval().

var blink = function(){
    $('#blinker').toggle();
};
var glbTimer = setInterval(blink, 800); //declare an ID created by `setInterval()`

$("#stopBlink").click(function(){
   clearInterval(glbTimer); //clear the interval of the ID.
});

Проверьте эту ссылку для получения дополнительной информации.

Может быть, вы можете попробовать это демо .

0 голосов
/ 09 декабря 2011
var blink = function(){
    $('#blinker').toggle();
};
var bl = setInterval(blink, 800);

$("#stopBlink").click(function(){
   clearInterval(bl); 
});
...