I have a working script (thanks stackexchange!) for exchanging an image on the fly. I use it as a gallery script. It looks like this:
           $(".source a").click(function(e){
                e.preventDefault();
                var $a = $(this);
                $("#targetcontainer img").hide("puff", function(){
                    $(this).attr("src", $a.attr("href")).show("fold");
                });
            });
The problem regarding this script is that the old image flickers after the JQ show command. The new source Image shows up a second or so later which makes a weird effect. how can I prevent this from happening?
You could preload the image before attempting to display it...
$(".source a").click(function(e) {
    e.preventDefault();
    var newSrc = this.href,
        image = new Image();    
    image.onload = function() {
        $("#targetcontainer img").hide("puff", function() {
            $(this).attr("src", newSrc).show("fold");
        });
    }
    image.src = newSrc;
});
                        In JQuery there is load event.
1) Retrieve image.
var image = $("#img");
image.hide();
2) On load do something.
image.load(function(){
 image.show();
});
3) Change src attribute to fire load event after image has changed.
image.attr("src","image.jpg");
You can read more about it in here: http://api.jquery.com/load-event/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With