使用backbonejs视图,将“onload”事件附加到图像标记的最佳方法是什么?

时间:2012-03-22 19:59:02

标签: javascript backbone.js backbone-events

我想在backbonejs视图中为图像附加“onload”事件。我目前将它包含在“事件”中作为“加载img”:“函数”,但它不会被解雇。

有关此的任何建议吗?

1 个答案:

答案 0 :(得分:11)

Backbone的事件处理基于delegate,而delegate只能用于冒泡的事件。问题是负载事件不会起泡;来自HTML5 specification

  

如果下载成功
  将img元素设置为完全可用状态,适当更新图像的显示,并在load元素上触发名为img的简单事件。

simple event不会冒泡:

  

发起一个名为 e 的简单事件,意味着名为 e 的事件不会起泡(除非另有说明)[ ...]

所以你必须用这样的东西手工连接一个处理程序:

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;
}

演示:http://jsfiddle.net/ambiguous/c7wH2/