2012-02-16 68 views
1

我試圖製作一個jQuery插件,它將採用一個正方形,在其中放置三個方塊,然後在這三個方塊內放置三個更小的正方形。我並不需要或想要完整的代碼,因爲這是我自己的問題搞清楚,但我無法弄清楚如何使一個jQuery插件調用本身,如:如何製作遞歸jQuery函數?

(function($){ 
    $.fn.squares = function(type) { 
     var recursionDepth = 1; 

     return this.each(function() { 
      var $this = $(this); 

      if (++ recursionDepth > 3) {console.log('rec lim');return;} 
      // put div.squares in $this 
      $('.square', $this).squares(); 
     }); 
    }; 
})(jQuery); 

回答

3

使用一個輔助函數,它實際工作並將深度作爲參數。使用深度爲1(或0)的插件main方法調用它,然後逐漸增加深度,直到達到所需的深度。

未經測試:

(function($){ 
    $.fn.squares = function(type) { 

     return this.each(function() { 
      doSquares($(this),1); 
     }); 

     function doSquares($square,depth) { // adds three squares to the current square and recurses over each to the appropriate depth 
      for (int i = 0; i < 3; ++i) { 
       var $newSquare = // add square to current square and return jQuery of the new square 
       if (depth < 3) { 
        doSquares($newSquare,depth+1); 
       } 
      } 
     } 
    }; 
})(jQuery);