2011-12-05 39 views
0

有沒有人知道我可以如何停止這個插件解壓後的文本?我喜歡動畫,但我希望它停止而不是重複。這裏是一個鏈接http://www.caitmizzi.com/Untitled-1.html如何停止機場的jQuery插件

這裏是JQuery的

(function($){ 
    $.fn.extend({ 
     airport: function(array) { 

      var self = $(this); 
      var chars = ['a','b','c','d','e','f','g',' ','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','-']; 
      var longest = 0; 
      var items = items2 = array.length; 

      function pad(a,b) { return a + new Array(b - a.length + 1).join(' '); } 

      $(this).empty(); 

      while(items--) 
       if(array[items].length > longest) longest = array[items].length; 

      while(items2--) 
       array[items2] = pad(array[items2],longest); 

      spans = longest; 
      while(spans--) 
       $(this).prepend("<span class='c" + spans + "'></span>"); 


      function testChar(a,b,c,d){ 
       if(c >= array.length) 
        setTimeout(function() { testChar(0,0,0,0); }, 1000);     
       else if(d >= longest) 
        setTimeout(function() { testChar(0,0,c+1,0); }, 1000); 
       else { 
        $(self).find('.c'+a).html((chars[b]==" ")?"&nbsp;":chars[b]); 
        setTimeout(function() { 
         if(b > chars.length) 
          testChar(a+1,0,c,d+1); 
         else if(chars[b] != array[c].substring(d,d+1).toLowerCase()) 
          testChar(a,b+1,c,d); 
         else 
          testChar(a+1,0,c,d+1); 
        }, 20); 
       } 
      } 

      testChar(0,0,0,0); 
     } 
    }); 
})(jQuery); 

這是函數

$(document).ready(function(){    
       $('#Entry').airport(['caitmizzi']); 
      }); 

回答

2

更改此:

if(c >= array.length) 
    setTimeout(function() { testChar(0,0,0,0); }, 1000);     
else if(d >= longest) 
    setTimeout(function() { testChar(0,0,c+1,0); }, 1000); 
else 

要:

if(c >= array.length || d >= longest){ 
} 
else 

現場演示:http://jsfiddle.net/VPWyQ/

+0

謝謝!我曾嘗試過,但無濟於事。但這是完美的。 – Greg

+0

這不是一個動畫,插件會設置新的超時時間,在完成之後需要停止,或者不要調用像上面那樣的任何超時。 – Niels