删除隐藏延迟

时间:2010-12-18 22:26:33

标签: javascript jquery image delay

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

  return this.each(function()
  {
   var obj = $(this).find("img");
   setInterval(function()
   {
    if($(obj).css("display") == "block")
    {
     $(obj).fadeOut('slow');
    }
    else
    {
     $(obj).fadeIn('slow');
    }
   }, options.delay);
  });
 }
}(jQuery))

$('.blink').blink();

HTML:

<a href="#" class="blink">
    <img src="image.png" alt="some image" />
</a>

此脚本删除具有过渡效果的图像,然后将其显示回来。所以这里有两个步骤:1)隐藏,2)显示。

每一步都有5秒的延迟,只有当图像可见时才会延迟。

如何从隐藏步骤中删除延迟?当图像不可见时,不应有任何延迟。

代码可在JsFiddle

上找到

它是一个圆形脚本,一旦fadeIn / Out完成,它应该再次启动。

感谢。

2 个答案:

答案 0 :(得分:2)

更新:在这里:http://jsfiddle.net/ifaour/Sj5sX/

我非常喜欢jQuery Gurus的笔记和改进。

更新2 :或http://jsfiddle.net/ifaour/tzdxX/


抱歉,我的问题落后了:) 使用方法:

$(obj).hide();

而不是:

$(obj).fadeOut('slow');

如果您想直接展示

使用:

$(obj).show();

而不是:

$(obj).fadeIn('slow');

答案 1 :(得分:2)

要删除fadeOut之后的延迟,只需将呼叫链接起来,而不是按照自己的间隔调用它们:

$(obj).fadeOut('slow').fadeIn('slow');

我对代码进行了一些简化:http://jsfiddle.net/vcWDy/2/