Здравствуй.
У меня есть функция продолжения и остановки.
Когда я вызываю функцию остановки, щелкнув в одном из синих квадратов, она вызывает функцию продолжения через 1 мс позже.
Моя проблема в том, что когда я нажимаю "Документ", он должен снова вызвать функцию остановки, но это не так, вот скрипка для более пристального взгляда.
PS: в коде javascript вам нужно прокрутить весь путь вниз, потому что я не мог включить плагин JQuery.
Я отметил свою проблему с этим комментарием, где начинается мое кодирование:
//############ here starts my part ####################
Как указано в комментариях, не повторяйте свое событие каждый раз, когда вызывается stop()
. Давайте переместим эту привязку, и мы также будем использовать stopPropgation()
чтобы событие клика не stopPropgation()
в документе, что запустит плагин, чтобы снова запустить mojo:
function stop(){
$("#webticker").trigger('click'); //This method doesn't provide anything, except perhaps making code a bit more readable
}
$("#webticker").click(function(event){
event.stopPropagation(); //If we don't stop propagation, the click event will bubble up to the document, which will start the ticker again
$("#webticker").webTicker('stop');
if($(event.target).is('#img1')) {
$('#log').html(event.target.id + ' was clicked.');
timer = setTimeout(contin, 1);
} else if($(event.target).is('#img2')){
$('#log').html(event.target.id + ' was clicked.');
timer = setTimeout(contin, 1);
} else if($(event.target).is('#img3')){
$('#log').html(event.target.id + ' was clicked.');
timer = setTimeout(contin, 1);
} else if($(event.target).is('#img4')){
$('#log').html(event.target.id + ' was clicked.');
timer = setTimeout(contin, 1);
} else if($(event.target).is('#img5')){
$('#log').html(event.target.id + ' was clicked.');
timer = setTimeout(contin, 1);
}
});
JSFiddle: http://jsfiddle.net/rLyyR/6/
stop
, и это является частью вашей проблемы. Он будет связывать одни и те же события снова и снова, и для каждой привязки будут вызываться все обработчики событий. Когда вы нажали 10 раз, у вас будет 1024 обработчика события щелчка, привязанных к каждому элементу, и следующий щелчок вызовет создание еще 1024 привязок. Нажмите еще несколько раз, и вы заметите, что браузер останавливается на несколько секунд каждый раз, запуская тысячи обработчиков событий и связывая тысячи других событий.