2010-12-18 160 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