0

DOM イベントに似た方法で別の関数が完了したときに関数を起動する方法はありますか?

例(私はそれが不可能であることを知っていますが...)

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

2 に答える 2

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オブジェクトについては、MDN を参照してください。残念ながら、IE9 などのブラウザは、配列のようなオブジェクトを受け入れるslice必要がある ES5 標準に正しく準拠していないため、プレーンな配列に変換するために を使用する必要があります。apply

于 2013-07-20T07:57:23.910 に答える