gpt4 book ai didi

javascript - 如果我只知道元素和事件,则删除事件监听器

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:58:17 27 4
gpt4 key购买 nike

如果我只知道元素和事件,但不知道函数,有没有办法删除事件监听器?

类似于:

var foo = getElementById("foo");
foo.removeEventListener('click');

最佳答案

纯 JS 方法

如果不引用其监听器方法,则无法分离事件监听器。

Method definition需要指定 listener

经过修改的 JS

可以像这样使用某种自定义函数:

function addEventListenerAndRemember(element, type, listener, useCapture)
{
if (!element.myEvents) element.myEvents = {};
if (!element.myEvents[type]) element.myEvents[type] = [];

element.myEvents[type].push(listener);

element.addEventListener(type, listener, useCapture || false);
}

function removeAllEventListener(element, type)
{
element.myEvents.forEach(function() {
element.myEvents[type].forEach(function(listener) {
element.removeEventListener(type, listener);
});
element.myEvents[type] = [];
});
}

我不确定这段代码是否有效——它只是演示这个想法的一个例子。
您还可以将这些方法包装到 addEventListener 并覆盖默认行为。就像:

Element.prototype.addEventListenerBase = Element.prototype.addEventListener;
Element.prototype.addEventListener = function(type, listener, useCapture) {
// do the same
};

jQuery 方法

对我来说,使用 jQuery 库似乎是这里最明确的解决方案。

您将能够以这种方式附加事件:

$("#foo").on('click', function() {

});

并以一种简单的方式分离它:

$("#foo").off('click');

关于javascript - 如果我只知道元素和事件,则删除事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34459805/

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