JQuery取消绑定匿名函数无法正常工作

时间:2016-06-23 13:23:48

标签: javascript jquery unbind

我有这样的功能:

function init() {
    $('#someElement').unbind('change', init);
    $('#someElement').chosen().change(function () {
        init();
    } 
}

unbind不适用于second executionduplicate个事件监听器。

但是$('#someElement').unbind()按预期工作。

  

答案:我找到了正确的方法,这很简单:

     

需要使用:

function init() {
    $('#someElement').one('change', function() {
       init;
    }
}

1 个答案:

答案 0 :(得分:3)

您正在为change事件提供匿名函数,因此在unbind上传递init()的引用不起作用。

要根据需要使其正常工作,请在附加活动时传递init()的引用:

function init() {
    $('#someElement').unbind('change', init).chosen().change(init); 
}

请注意,此unbind / bind模式似乎有点多余。您应该查看委派的事件处理程序,因为它们可能更适合您的需求。

另请注意,unbind()被视为过时,您应该使用off()