I want to attach an "onload" event for an image in a backbonejs view. I am currently including it in the "events" as "load img":"function", but it is not getting fired off.
Any suggestions for doing this?
Backbone's event handling is based on delegate
and delegate
can only be used with events that bubble. The problem is that load events do not bubble; from the HTML5 specification:
If the download was successful
Set theimg
element to the completely available state, update the presentation of the image appropriately, and fire a simple event namedload
at theimg
element.
And a simple event does not bubble:
Firing a simple event named e means that an event with the name e, which does not bubble (except where otherwise stated) [...]
So you'll have to hook up a handler by hand with something like this:
render: function() {
var self = this;
this.$el.append(some_html_with_img_elements);
this.$el.find('img').on('load', function() { self.img_loaded() });
return this;
}
Demo: http://jsfiddle.net/ambiguous/c7wH2/
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