我有这样的功能:
function init() {
$('#someElement').unbind('change', init);
$('#someElement').chosen().change(function () {
init();
}
}
但unbind
不适用于second execution
和duplicate
个事件监听器。
但是$('#someElement').unbind()
按预期工作。
答案:我找到了正确的方法,这很简单:
需要使用:
function init() { $('#someElement').one('change', function() { init; } }
答案 0 :(得分:3)
您正在为change
事件提供匿名函数,因此在unbind上传递init()
的引用不起作用。
要根据需要使其正常工作,请在附加活动时传递init()
的引用:
function init() {
$('#someElement').unbind('change', init).chosen().change(init);
}
请注意,此unbind / bind模式似乎有点多余。您应该查看委派的事件处理程序,因为它们可能更适合您的需求。
另请注意,unbind()
被视为过时,您应该使用off()
。