2010-12-18 22 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:Entfernen Verzögerung auf hide

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

Dieses Skript entfernt Bild mit Übergangseffekt, und dann zeigt sie zurück. Also hier sind zwei Schritte: 1) ausblenden, 2) anzeigen.

Es gibt 5 Sekunden Verzögerung bei jedem Schritt, es sollte nur sein, wenn das Bild sichtbar ist.

Wie entferne ich die Verzögerung aus dem Versteckschritt? Es sollte keine Verzögerung geben, wenn das Bild nicht sichtbar ist.

-Code auf JsFiddle

Es ist ein Kreis Skript zur Verfügung steht, sobald fadeIn/Out durchgeführt wird, sollte es wieder in Betrieb genommen werden.

Danke.

Antwort

2

die Verzögerung entfernen nach fadeOut, Kette nur die Anrufe, anstatt sie auf ihrem eigenen Intervall Aufruf:

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

Ich habe einige Vereinfachungen auf den Code: http://jsfiddle.net/vcWDy/2/

+0

wow! Wie kommt es, dass ich nicht daran denke! ... Ich denke, es ist Zeit fürs Bett (2 Uhr morgens) !! :) – ifaour

+0

danke Mann, gute Lösung. – James

2

UPDATE: hier geht: http://jsfiddle.net/ifaour/Sj5sX/

ich alle Ohren für die jQuery Gurus bin für Notizen und Verbesserungen ..

UPDATE 2: oder http://jsfiddle.net/ifaour/tzdxX/


Entschuldigung, ich habe Ihre Frage zurück :) verwenden:

$(obj).hide(); 

statt:

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

Wenn Sie wollen, dass es zeigen, direkt

Verwendung:

$(obj).show(); 

statt:

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

bitte noch einmal meine Frage gelesen. – James

+0

gibt es eine Dublette von options.delay (4000), welche ist sinnvoll? – James

+0

Ich habe deine Frage nicht verstanden? Beachten Sie auch, dass ich beide Beispiele aktualisiert habe, um den Wert zu verwenden, den Sie an ihn übergeben, anstatt ihn fest zu codieren. – ifaour