执行另一个函数时的Jquery fire函数

时间:2013-07-20 07:56:25

标签: javascript jquery function events

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

e.g。 (我知道这不可能,但......)

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

2 个答案:

答案 0 :(得分: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 object的信息,请参阅MDN。不幸的是,使用slice将其转换为普通数组是必要的,因为IE9等浏览器无法正确遵循ES5标准,这需要apply接受任何类似数组的对象。

答案 1 :(得分:0)

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

简要概述 -

  • 您可以为延迟对象的done / fail / always事件指定回调。
  • 您现在需要做的就是在此延迟对象上调用resolve / reject事件。
  • 触发此事件将运行相应回调中指定的方法。

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

希望这有帮助。