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


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

这样做有什么建议吗?


11295
2018-03-22 19:59


起源



答案:


Backbone的事件处理基于 delegate 和 delegate 只能用于冒泡的事件。问题是负载事件不会冒泡;来自 HTML5规范

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

还有一个 简单的事件 不起泡:

发射一个名为的简单事件 Ë 表示具有名称的事件 Ë,没有泡沫(除非另有说明)[...]

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

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/


11
2018-03-22 20:30



完善!这有帮助。是的,我注意到在使用jquery的“on”方法时出现事件冒泡问题。我想知道,如果backbonejs实现了不同的逻辑。但是,我还不知道“简单事件”。感谢你的回答 - KD12


答案:


Backbone的事件处理基于 delegate 和 delegate 只能用于冒泡的事件。问题是负载事件不会冒泡;来自 HTML5规范

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

还有一个 简单的事件 不起泡:

发射一个名为的简单事件 Ë 表示具有名称的事件 Ë,没有泡沫(除非另有说明)[...]

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

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/


11
2018-03-22 20:30



完善!这有帮助。是的,我注意到在使用jquery的“on”方法时出现事件冒泡问题。我想知道,如果backbonejs实现了不同的逻辑。但是,我还不知道“简单事件”。感谢你的回答 - KD12