当另一个函数以类似于DOM事件的方式完成时,是否有办法触发函数?
e.g。 (我知道这不可能,但......)
$('body').on('myFunction', function(){
alert('My function was called.');
})
答案 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。
简要概述 -
我编译了这个小小提琴作为演示。 - FIDDLE。
希望这有帮助。