sábado, 19 de octubre de 2013

jQuery plugin "loop"

Codigo en JavaScript
/**!
 * jQuery Loop
 *
 * @Vercion 1.0.0
 *
 * @Creado el 19 de Octubre de 2013.
 *
 * @Autor Luis A. Vega
 *     facabook: http://fb.com/luis.vega.igr
 *     twitter: http://twitter.com/Luis_vegaa
 *
 * @Descripcion
 *     el plugin ejecuta funciones anidadas en un vector
 *     ( jQuery.loop.callbacks ), las cuales son ejecutadas
 *     redundante-mente mientras jQuery.loop.play sea
 *     igual a true, en un intervalo determinado por
 *     jQuery.loop.secons.
 *
 * @Licencia MIT http://www.opensource.org/licenses/mit-license.php
 *
**/
(function( window ){
    "use strict";
    var
   jQuery, $,
   loop = function( data ){
            loop.append( data );
        };
    jQuery = $ = window.jQuery;
jQuery.extend({
        "timeEval": function( secons, callback ){
       window.setTimeout( callback, secons * 1000 );
        },
   "loop": loop
    });
    jQuery.extend( loop, {
        "callbacks": [],
   "play": true,
    "secons": 1,
"stop": function(){
            loop.play = false;
        },
    "run": function(){
            if( loop.play ){
           $.each( loop.callbacks, function(){
           this();
       });
       }
        },
        "append": function( data ){
            if( !$.isArray( data ) ){
           data = [ data ];
         }
       $.each( data, function( i, value ){
          loop.callbacks.push( value );
       });
        },
        "event": function(){
            loop.run();
            $.timeEval( loop.secons, loop.event );
        }
    });
    jQuery.timeEval( 1, loop.event );
}( window ));

con estos códigos podremos crear un evento que se ejecute cada una determinada fracción de tiempo, supongamos que queremos una alerta cada 15 segundos, el código seria este:
jQuery.loop.secons = 15;
jQuery.loop.append(function(){
    alert( "hola! nos veremos en 15s" );
});