2013-07-20 56 views
0

当另一个函数以类似于DOM事件的方式完成时,是否有方法来引发函数?当另一个函数被执行时Jquery引发函数

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

$('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; 
}; 

见MDN约传递给函数的arguments object含参数的信息。不幸的是,使用slice将其转换为普通数组是不必要的,因为诸如IE9等浏览器无法正确地遵循ES5标准,这需要apply才能接受任何类似数组的对象。

+0

谢谢!它具有全球范围,你的例子完美地工作:D – imperium2335

0

不知道这是否完全是你想要的。但我认为你应该试试jquery Deferred对象。看看这里的jquery文档 - Jquery Deferred Object

简要概述 -

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

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

希望这会有所帮助。

相关问题