我有一些函数会将事件监听器(.click(...))添加到某些元素(以及许多其他任务中)。如何避免.click()每次使用时都会添加新的监听器
我需要多次调用此函数(例如在窗口调整大小)。 每次我调用这个函数时,监听器都会再次被添加 - 所以如果我3次调用我的函数,每次点击都会触发3次而不是一次。
我建一个simplyfied例如: 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()删除事件?
也许这可以帮助你。插入' clickMe.unbind(“click”);'在'clickMe.click(function()'之前'像这样https://plnkr.co/edit/iFAEantGoMyIhkYJMKwj?p=preview –
如果你在版本中使用'Jquery'大于1.7,最好使用'on'' off'而不是'unbind' – Mark
这个工作,Carsten,但我希望有一个更优雅的解决方案,因为我有很多元素/处理程序。 – Gerfried