JQuery переключатель не будет запускаться снова - PullRequest
0 голосов
/ 25 сентября 2011

У меня есть 2 функции, которые я хочу повторить снова и снова:

    function rotation () {
        plrotation();
        function plrotation () {
            alert('pl');
            $('#pl').toggle(300).delay(10000).toggle(400).delay(2000, function (){errotation()});
            alert('pl end');
        }
        function errotation () {
            alert('er');
            $('#er').toggle(300).delay(10000).toggle(400).delay(2000, function (){plrotation()});
            alert('er end');
        }
    }

Но после первого раза я получаю оповещения "pl" и "pl end", но переключение не произойдет, итакже ошибка не запускается ... Любая идея, что я делаю неправильно?

Или, может быть, есть какой-то другой способ сделать то, что мне нужно (показать элемент 1 => wait => скрыть element1 => wait => show element 2 => wait => hide element 2 => wait => restart)

1 Ответ

2 голосов
/ 25 сентября 2011

Ваш последний звонок jQuery.delay() не верен.Задержка только задерживает очереди, она не требует обработчика завершения, как другие функции анимации.Его нельзя использовать вместо setTimeout().

. Поэтому используйте setTimeout(), а не delay().

function rotate(el) { 
   var $el = $(el);
   $el.toggle(300).delay(10000).toggle(400, function() { 
       var next = $el.is('#pl') ? '#er' : '#pl';
       setTimeout(function() { rotate(next); }, 2000); 
   });
}

$(function() { rotate('#pl')});
...