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