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
。
请帮忙。非常感谢提前!
答案 0 :(得分:3)
如果window
上的方法未定义,则表示您的功能不是全局的。使其成为一个全球性的功能。
此外,你可以摆脱.apply
。目前,您将'works'
作为this
值传递。
window[functionName]('works');
答案 1 :(得分:2)
首先,您需要设置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);
});
});