2011-09-25 130 views
0

我有2個功能,我想一次又一次地重複:不會jQuery的切換不會再次觸發

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結束」的警報,但切換髮生,並且錯誤也沒有開始......任何我做錯的想法是錯誤的? (show element 1 => wait => hide element1 => wait => show element 2 => wait => hide element 2 => wait => restart)

回答

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')}); 
+0

OK了... .. MHM現在我覺得啞巴...... :) –

+0

哦,非常感謝你! :) –