我有一个小部件,我正在为特定事件分配回调函数。
以下代码可以正常工作并触发我的回调。
$(selector).MyFancyWidget('option', 'onComplete', this._onComplete);
我的问题是在事件触发后我想从_onComplete方法中删除回调。
onComplete是使用_trigger方法在窗口小部件中触发的事件,并且工作正常。
做点什么
$(selector).MyFancyWidget('option', 'onComplete', $.noop);
不分离回调(我假设它只是添加另一个监听器。
为清楚起见,这里是窗口小部件中将触发事件的代码。
instance._trigger('onComplete', e, {currentTarget: instance});
所以我的问题是如何删除该回调?
这不是我不想再发动这个事件了,我只是不想再听它了。
答案 0 :(得分:2)
这样做最直接的方法是让回调只执行一次。因此,无论您在何处定义_oncomplete
函数:
var completeRan = false;
this._onComplete = function(e, args) {
if (completeRan) {
return;
}
// Rest of your code.
completeRan = true;
return this;
}