将参数传递给函数作为参数传递给jQuery函数

时间:2013-02-12 15:17:53

标签: javascript jquery function argument-passing

Passing function name as a parameter to another function似乎不适合我。

我已经尝试过我能找到的每篇文章的每一个变体。目前,我在一个js文件中有这个:

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

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

我在另一个中有这个:

$(document).ready(function () {

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

});

chrome console说Uncaught TypeError: Cannot call method 'apply' of undefined

请帮忙。非常感谢提前!

2 个答案:

答案 0 :(得分:3)

如果window上的方法未定义,则表示您的功能不是全局的。使其成为一个全球性的功能。


此外,你可以摆脱.apply。目前,您将'works'作为this值传递。

window[functionName]('works');

答案 1 :(得分:2)

jsFiddle Demo

设置

首先,您需要设置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);
    });
});