views:

70

answers:

2

the first time the code is executed it correctly produces:
load complete

but the 2nd time it produces:
load complete
load complete

the 3nd time it produces:
load complete
load complete
load complete

etc... so the 20th time the load function completes the call back function gets fired 20 times.

$('#image-tag').load(function () {
        console.log("load complete");
    });
}).attr('src', 'image.jpg').appendTo('#main');

any idea what's causing the call back function to repeat/increase like this?

+1  A: 

That's because you are adding another event handler every time you run that code.

If you want to append an image tag into an element, you should not use an image that already is in the page. Create a new image tag instead:

$('<img/>').load(function () {
  console.log("load complete");
}).attr('src', 'image.jpg').appendTo('#main');
Guffa
ahhh tottally missed that, thanks!
Moudy
A: 

It woulds like you're calling this inside a click handler or something else, this binds a new .load() handler each time. Either bind the .load() once, or use .one(), like this:

$('#image-tag').one('load', function () {
    console.log("load complete");
});
Nick Craver