当另一个函数以类似于 DOM 事件的方式完成时,有没有办法触发一个函数?
例如(我知道这是不可能的,但是......)
$('body').on('myFunction', function(){
alert('My function was called.');
})
当另一个函数以类似于 DOM 事件的方式完成时,有没有办法触发一个函数?
例如(我知道这是不可能的,但是......)
$('body').on('myFunction', function(){
alert('My function was called.');
})
不,除非您可以替换该函数(即可以访问其范围),否则绝对没有办法做到这一点。
如果您确实可以访问范围,那么它会变得非常容易,并且根本不需要任何 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
接受任何类似数组的对象。
不确定这是否完全是您想要的。但我认为你应该尝试 jqueryDeferred
对象。在这里查看 jquery 文档 - Jquery Deferred Object。
简要概述 -
我已经编译了这个小小提琴作为演示。-小提琴。
希望这可以帮助。