1

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

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

我的问题是在事件触发后我想从 _onComplete 方法中删除回调。
onComplete 是一个使用 _trigger 方法在小部件中触发的事件,并且工作正常。做类似的事情

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

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

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

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

4

1 回答 1

2

最直接的方法是让回调只做一次。所以无论你定义你的_oncomplete功能:

var completeRan = false;
this._onComplete = function(e, args) {
    if (completeRan) {
        return;
    }
    // Rest of your code.
    completeRan = true;
    return this;
}
于 2013-07-22T20:29:13.680 回答