2011-04-27 94 views
3

我使用这个闪烁功能停止功能,jQuery的

(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}); 

我想让它停在window.load

我不知道怎么办呢,到底是什么?任何帮助将非常感激。谢谢!

回答

1

Live Demo

你需要追踪的setInterval返回的整数,然后clearInterval为他们每个人。

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]); 
    } 
}); 
+0

@duttka,我通过jshint运行,它失败了? – Yahreen 2011-04-27 19:37:07

+0

胖手指,更新即将到来 – 2011-04-27 19:43:04

+0

用jsfiddle上的现场示例更新。 jshint中的部分(不是全部)错误出现在您发布的原始代码中:p – 2011-04-27 19:49:42

0

最正确的解决办法是存储由setInterval返回的ID,然后清除他们所有clearInterval。然而,更简单/ braindead的方法只是:

$("#bootUp p").replaceWith($("#bootUp p").clone());