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!
Solución
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