我有一个函数,它将事件监听器(.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()删除事件?
答案 0 :(得分:1)
我查看了您的代码,我认为这是一个修复
如果您删除了点击事件
Generate
然后你可以再次添加它,如果在添加它之前它将一直删除它。
.off("click")
以下是更改的javascript
.off("click").on("click", function() {