如何避免.click()每次使用时都会添加新的侦听器

时间:2017-05-04 09:12:33

标签: jquery events

我有一个函数,它将事件监听器(.click(...))添加到某些元素(在许多其他任务中)。

我需要多次调用此函数(例如在窗口调整大小时)。 每次我调用此函数时,都会再次添加侦听器 - 因此,如果我将函数调用3次,则每次单击将触发3次而不是一次。

我构建了一个简单的例子: https://plnkr.co/edit/5NmIruVoAknfcrRTBSYb

  var clickMe = $("#clickme");
  function init() {
    setTimeout(function() {
      clickMe.click(function() {
        $("#output").append(".");
      })
    }, 100)
  }

  init();

  $("#recall").click(function() {
    init();
  });

当然这个示例(以及setTimeout)没有意义,但它最能反映我的代码块。 是否有可能以一种方式关闭整个init函数,如果我调用它就会重置一切?或者每次都必须使用unbind()删除事件?

1 个答案:

答案 0 :(得分:1)

我查看了您的代码,我认为这是一个修复

如果您删除了点击事件

Generate

然后你可以再次添加它,如果在添加它之前它将一直删除它。

.off("click")

以下是更改的javascript

.off("click").on("click", function() {