2013-07-20 54 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

希望這會有所幫助。

相關問題