1

関数名をパラメーターとして別の関数に渡すことは、私にはうまくいかないようです。

私は見つけることができるすべての記事からすべてのバリエーションを試しました。現在、私はこれを1つのjsファイルに入れています。

function callThisPlease (testIt){
    alert(testIt);
}

$(document).ready(function () {
    $.fn.pleaseCallTheOtherFunction('callThisPlease');
});

私は別のものにこれを持っています:

$(document).ready(function () {

    $.fn.pleaseCallTheOtherFunction = function(functionName){
        window[functionName].apply('works');
    }

});

クロームコンソールは言うUncaught TypeError: Cannot call method 'apply' of undefined

助けてください。よろしくお願いします!

4

2 に答える 2

3

メソッドがで定義されていない場合window、それは関数がグローバルではないことを意味します。それをグローバル関数にします。


また、あなたはを取り除くことができます.apply'works'現在、値として渡していthisます。

window[functionName]('works');
于 2013-02-12T15:20:31.157 に答える
2

jsFiddleデモ

設定

pleaseCallTheOtherFunctionまず、次のようにメソッドを設定する必要があります。

$.fn.pleaseCallTheOtherFunction = function(otherFunction) {
    if ($.isFunction(otherFunction)) {
        otherFunction.apply(this, ['works']);
    }
};

使用法

次に、「置換」関数(委任)を作成し、次のように引用符なしで呼び出します。

function callThisPlease (testIt){
    alert(testIt);
}

$(document).ready(function () {
    $().pleaseCallTheOtherFunction(callThisPlease);
});

あるいは

インライン関数を書くことができます:

$(document).ready(function () {
    $().pleaseCallTheOtherFunction(function(testIt) {
        alert(testIt);
    });
});
于 2013-02-12T15:19:54.487 に答える