我有一些函數會將事件監聽器(.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