如何从jQuery小部件中删除回调函数

时间:2013-07-22 20:11:49

标签: javascript jquery-ui callback widget

我有一个小部件,我正在为特定事件分配回调函数。
以下代码可以正常工作并触发我的回调。

$(selector).MyFancyWidget('option', 'onComplete', this._onComplete);

我的问题是在事件触发后我想从_onComplete方法中删除回调。
onComplete是使用_trigger方法在窗口小部件中触发的事件,并且工作正常。 做点什么

$(selector).MyFancyWidget('option', 'onComplete', $.noop);

不分离回调(我假设它只是添加另一个监听器。
为清楚起见,这里是窗口小部件中将触发事件的代码。

instance._trigger('onComplete', e, {currentTarget: instance});

所以我的问题是如何删除该回调?
这不是我不想再发动这个事件了,我只是不想再听它了。

1 个答案:

答案 0 :(得分:2)

这样做最直接的方法是让回调只执行一次。因此,无论您在何处定义_oncomplete函数:

var completeRan = false;
this._onComplete = function(e, args) {
    if (completeRan) {
        return;
    }
    // Rest of your code.
    completeRan = true;
    return this;
}