Javascript 是否有类似“的东西?”;listenTo";在jQuery中?还是必须使用名称空间并手动解除绑定?

Javascript 是否有类似“的东西?”;listenTo";在jQuery中?还是必须使用名称空间并手动解除绑定?,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我正在使用第三方lazyload插件: 在其来源中,它有以下内容: if (0 === settings.event.indexOf("scroll")) { $container.on(settings.event, function (event) { return update(); }); } 这将对父元素应用“滚动”事件。插件中没有解除事件绑定的逻辑。这很糟糕,因为有时我会添加100个惰性元素,然后删除并重新添加其他元素,而不替换容器。这会导致大量事件

我正在使用第三方lazyload插件:

在其来源中,它有以下内容:

if (0 === settings.event.indexOf("scroll")) {
    $container.on(settings.event, function (event) {
        return update();
    });
}
这将对父元素应用“滚动”事件。插件中没有解除事件绑定的逻辑。这很糟糕,因为有时我会添加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时,我可以访问:,但我不确定jQuery/Javascript中是否存在类似的函数。在jQuery中,只有两种方法<代码>打开和
关闭
。或者只需对要删除的每个元素调用remove()

$(document).off(elementName)

我在jQuery中对事件命名如下:
scroll.left
/
scroll.right
,等等。不,但是您可以在自己的系统中实现此方法。这非常简单,甚至可以使用jquery
event.namespace
来处理DOM事件。不,jquery中没有类似于
listenTo
的东西,但您可以使用event.namespace实现,这样做更好更简单!(即使实现了listenTo for jquery,您也必须为带有
event.namespace的命名空间使用唯一的id