0

当另一个函数以类似于 DOM 事件的方式完成时,有没有办法触发一个函数?

例如(我知道这是不可能的,但是......)

$('body').on('myFunction', function(){
    alert('My function was called.');
})
4

2 回答 2

3

不,除非您可以替换该函数(即可以访问其范围),否则绝对没有办法做到这一点。

如果您确实可以访问范围,那么它会变得非常容易,并且根本不需要任何 jQuery:

var origFunc = theFunction;
theFunction = function() {
    var args = Array.prototype.slice.call(arguments);
    // run before the call
    var rv = origFunc.apply(this, args);
    // run after the call
    return rv;
};

有关包含传递给函数的参数的arguments对象的信息,请参阅 MDN 。不幸的是,使用slice将其转换为普通数组是必要的,因为 IE9 等浏览器未能正确遵循 ES5 标准,该标准需要apply接受任何类似数组的对象。

于 2013-07-20T07:57:23.910 回答
0

不确定这是否完全是您想要的。但我认为你应该尝试 jqueryDeferred对象。在这里查看 jquery 文档 - Jquery Deferred Object

简要概述 -

  • 您可以为延迟对象的完成/失败/始终事件指定回调。
  • 您现在需要做的就是在这个延迟对象上调用解决/拒绝事件。
  • 触发此事件将运行相应回调中指定的方法。

我已经编译了这个小小提琴作为演示。-小提琴

希望这可以帮助。

于 2013-07-20T08:36:13.417 回答