2012-02-16 3 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) и перезапустите его, увеличивая глубину, пока вы дойдете до нужной глубины.

Непроверенные:

(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); 
Смежные вопросы