将回调函数添加到$ .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/

10-09 17:55