Pregunta

Estoy usando esta función de parpadeo

(function($)
{
  $.fn.blink = function(options)
   {
       var defaults = { delay:500 };
       var options = $.extend(defaults, options);

       return this.each(function()
       {
           var obj = $(this);
           setInterval(
            function(){
               if($(obj).css("visibility") == "visible") {
                  $(obj).css('visibility','hidden');
               }
               else{
                  $(obj).css('visibility','visible');
               }
             },
            options.delay);
        });
    }
}(jQuery))

$("#bootUp p").blink({delay:300});  

Me gustaría que se detenga en la ventana.

¿No estoy seguro de cómo hacerlo exactamente? Cualquier ayuda sería muy apreciada. ¡Gracias!

¿Fue útil?

Solución

Demo en vivo

Debe rastrear los INT devueltos de SetInterval y luego ClearInterval para cada uno de ellos.

var intervals = new Array();

(function($)
{
  $.fn.blink = function(options)
   {
       var defaults = { delay:500 };
       var options = $.extend(defaults, options);

       return this.each(function()
       {
           var obj = $(this);
           intervals[intervals.length] = setInterval(
            function(){
               if($(obj).css("visibility") == "visible") {
                  $(obj).css('visibility','hidden');
               }
               else{
                  $(obj).css('visibility','visible');
               }
             },
            options.delay);
        });
    }
}(jQuery))

$("#bootUp p").blink({delay:300});
$("#bootUp2 p").blink({delay:300});

$(document).ready(function(){
    for(var i=0;i<intervals.length;i++){
        clearInterval(intervals[i]);
    } 
});

Otros consejos

La solución más correcta sería almacenar las ID de devuelto por setInterval, y luego aclararlos a todos con clearInterval. Sin embargo, un enfoque más simple/cerebral es solo:

$("#bootUp p").replaceWith($("#bootUp p").clone());
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top