gpt4 book ai didi

javascript - jQuery 中有类似 "listenTo"的东西吗?或者我是否必须使用命名空间并手动取消绑定(bind)?

转载 作者:行者123 更新时间:2023-12-01 05:51:42 25 4
gpt4 key购买 nike

我正在使用第三方延迟加载插件:http://www.appelsiini.net/projects/lazyload

在其源代码中,它具有以下内容:

if (0 === settings.event.indexOf("scroll")) {
$container.on(settings.event, function (event) {
return update();
});
}

这会将“滚动”事件应用于父元素。插件中没有用于解除事件绑定(bind)的逻辑。这很糟糕,因为有时我会添加 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 中是否存在类似的函数

最佳答案

在 jQuery 中你只有两种方法; 。或者简单地对您要删除的每个元素调用remove()。

$(document).off(elementName)

关于javascript - jQuery 中有类似 "listenTo"的东西吗?或者我是否必须使用命名空间并手动取消绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21513243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com