jquery切换不再触发

时间:2011-09-25 00:53:10

标签: jquery function toggle repeat

我有两个功能,我想一次又一次地重复:

    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 =>等待=>隐藏元素1 =>等待=>显示元素2 =>等待=>隐藏元素2 => ; wait =>重启)

1 个答案:

答案 0 :(得分:2)

您对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')});