2011-08-10 132 views
0

我一直在編輯一個JQuery插件'airport'並且遇到了問題;jquery插件問題

我想div在代碼中提到的點清除,但是當我使用$(self).empty();代碼就停止了。 (在代碼中間)。

這是我的代碼:

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; 

     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); }, 500);    
      else if(d >= array[c].length) 
       //Div should be cleared here... 
       setTimeout(function() { testChar(0,0,c+1,0); }, 500); 
      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的);

請告訴我如何清除所有內容的div。提前致謝!

+0

是你的實際代碼$(self)or $(this)?在上面的代碼cuz它是$(this)但$(self)將是錯誤的 – Evan

+0

這是我的實際代碼 –

+0

更改所有$(self)自我 – Evan

回答

1

self已經是jQuery對象不包裝它在$(),那麼它應該工作正常。

+0

像這樣: self.empty(); 如果是這樣,它不工作... –

+0

是的,只是'self.empty();' – ShankarSangoli

+0

'$(self)'在代碼的許多地方使用,到處都是改變,它應該工作正常。 – ShankarSangoli