javascript - 将事件监听器存储在函数中并调用该函数

标签 javascript jquery

我在函数中有一个事件监听器,每次调用该函数时,事件监听器都会不断附加,并且事件监听器中的代码会根据调用该函数的次数多次触发。我该如何解决这个问题?

function myFunction() {
    $("#element").on("click", function() {
        alert("test");
    }
}

$("body").on("click", function() {
    myFunction();
});

每次调用 myFunction() 时都会添加一个额外的单击事件监听器,因此如果我单击正文 5 次,则单击“#element”。尽管只点击一次,但警报消息将运行 5 次。

最佳答案

如果必须这样做,请先使用off,然后使用on,以确保它不会连接多次。为了确保您不会删除其他人的处理程序,请向事件添加自定义命名空间(例如下面的 .mycustom):

function myFunction() {
    $("#element").off('click.mycustom').on("click.mycustom", function() {
        alert("test");
    }
}

自定义命名空间对事件没有影响,但请确保您稍后可以使用 off 访问特定版本的 click

关于javascript - 将事件监听器存储在函数中并调用该函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29925025/

相关文章:

javascript - append() 不是 ajax 数据字符串中的函数 jQuery

javascript - 重新加载并显示消息

JavaScript 清理内存

javascript - Javascript 日期/时间函数是否依赖于客户端机器?

jquery - 在 Zombie.js 中使用 jQuery

JavaScript 改变 css

javascript - 如何从数组中删除 n 而不改变它?

javascript - 如何处理浏览器中按钮的事件

javascript - jQuery clone() 输入值函数

javascript - 模态 - 浏览器后退按钮停留在同一站点上