我正在使用第三方lazyload插件:http://www.appelsiini.net/projects/lazyload
在其来源中,它具有以下内容:
if (0 === settings.event.indexOf("scroll")) {
$container.on(settings.event, function (event) {
return update();
});
}
这会将'scroll'事件应用于父元素。插件中没有用于解除事件绑定的逻辑。这很糟糕,因为有时我会添加100个懒惰元素,然后删除并重新添加其他元素而不更换容器。这导致大量事件堆积起来!
我正在考虑修改插件,以便阅读:
if (0 === settings.event.indexOf("scroll")) {
// .on('scroll.item_12')
$container.on(settings.event + settings.namespace, function (event) {
return update();
});
// http://stackoverflow.com/questions/2200494/jquery-trigger-event-when-an-element-is-removed-from-the-dom
$(this).on('remove', function() {
$container.off(settings.event + settings.namespace);
});
}
这是处理这种情况的正确方法吗?使用BackboneJS时,我可以访问:http://backbonejs.org/#Events-listenTo,但我不确定jQuery / Javascript中是否存在类似的函数