将回调函数添加到$ .Callbacks()之后,我想再次将其删除:
var callbacks = $.Callbacks(),
foo = function() { console.log('Hello world') };
callbacks.add(foo);
callbacks.fire(); // logs 'Hello world'
callbacks.remove(foo);
callbacks.fire(); // nothing to trigger, removed perfectly
这样就可以了,但是现在我想添加一个匿名函数,如下所示:
callbacks.add(function(){ console.log('Hello anonymous world') });
callbacks.fire(); // logs 'Hello anonymous world'
看起来不错,但我不能再删除该功能:
callbacks.remove(function(){ console.log('Hello anonymous world') });
callbacks.remove();
callbacks.fire(); // still logs 'Hello anonymous world'
有办法克服吗?
最佳答案
根据OP请求:
功能由指针标识。您没有指向匿名函数的指针,因此您无须传递给remove()来告诉它要删除的函数。简单地传递重复函数并不能做到这一点,因为重复函数具有不同的指针。您需要坚持将函数分配给变量,然后将该变量传递给remove()。
参考:http://api.jquery.com/category/callbacks-object/
关于javascript - jQuery.Callbacks-删除匿名函数回调,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10179063/