2010-12-18 97 views
0
(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

它是一个圆形的脚本,一旦淡入/输出完成后,应该重新开始。

谢谢。

回答

2

要删除延迟fadeOut后,刚刚链中的调用,而不是要求他们对自己的时间间隔:

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

我做了一些简化的代码:http://jsfiddle.net/vcWDy/2/

+0

哇!我怎么没有想到这一点!...我想是时候睡觉了(凌晨2点)! :) – ifaour 2010-12-19 00:23:43

+0

谢谢你,很好的解决方案。 – James 2010-12-19 00:28:37

2

UPDATE:在这里你去:http://jsfiddle.net/ifaour/Sj5sX/

我对jQuery的大师所有的耳朵笔记和改进..

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


对不起,我把你的问题向后:) 使用:

0123而不是
$(obj).hide(); 

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

如果你想显示它直接

使用:的

$(obj).show(); 

代替:

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

请再次阅读我的问题。 – James 2010-12-18 22:44:46

+0

有options.delay(4000)的一个dublicate,其中之一是有用吗? – James 2010-12-18 23:53:29

+0

我不明白你的问题?还要注意,我已经更新了两个示例以使用您传递给它们的任何值,而不是将其设置为硬编码 – ifaour 2010-12-19 00:09:50