在jQuery中有类似“listenTo”的东西吗?或者我必须使用命名空间并手动取消绑定?

时间:2014-02-02 16:48:21

标签: javascript jquery backbone.js

我正在使用第三方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中是否存在类似的函数

0 个答案:

没有答案