我有这个jquery函数
function example(file, targetwidget, callback){
$(targetwidget).load(file, {limit: 25}, function(){
$("#widget_accordion").accordion({fillSpace: true});
});
}
它工作正常 当我这样做时:
example('http://example.com/', "#divid", callback);
但我想在(回调)变量中发送回调函数 即:取而代之的是对接$(“#widget_accordion”)。accordion({fillSpace:true});在我想发送的回调函数中:
example('http://example.com/', "#divid", '$("#widget_accordion").accordion({fillSpace: true});');
然后该函数必须是:
function example(file, targetwidget, callback){
$(targetwidget).load(file, {limit: 25}, function(){
callback;
});
但那不起作用
提前感谢您的帮助
答案 0 :(得分:19)
要传递回调,变量必须是函数类型。其中任何一个都应该有效:
function example(file, targetwidget, callback) {
$(targetwidget).load(file, {limit:25}, callback);
}
// Call it by providing the function parameter via inline anonymous function:
example('http://example.com/', "#divid", function() {
$("#widget_accordion").accordion({fillSpace: true});
});
// Or, declare a function variable and pass that in:
var widgetCallback = function() {
$("#widget_accordion").accordion({fillSpace: true});
};
example('http://example.com/', "#divid", widgetCallback);
// Or, declare the function normally and pass that in:
function widgetCallback() {
$("#widget_accordion").accordion({fillSpace: true});
}
example('http://example.com/', "#divid", widgetCallback);
答案 1 :(得分:2)
你需要在回调中调用函数
function example(file, targetwidget, callback){
$(targetwidget).load(file, {limit: 25}, function(){
callback();
});
答案 2 :(得分:1)
这应该有效:
$(targetwidget).load(file, {limit: 25}, callback);
答案 3 :(得分:1)
function example(file, targetwidget, callback){
$(targetwidget).load(file, {limit: 25}, function(){
if(typeof(callback)==='function'){
callback.call(this, 'other parameters');
}
});
回调参数将帮助您将数据发送回回调函数。请注意,不要忘记this
关键字!
答案 4 :(得分:1)
由于您要传递文本字符串,因此需要对其进行评估:
function example(file, targetwidget, callback){
$(targetwidget).load(file, {limit: 25}, function(){
eval(callback);
});
编辑:
如果你想使用call(),你必须这样做:
function callback() {
$("#widget_accordion").accordion({fillSpace: true});
}
function example(file, targetwidget, callback){
$(targetwidget).load(file, {limit: 25}, function(){
if(typeof(callback)==='function'){
callback.call(this);
}
});
example('http://example.com/', "#divid", callback);
为了使调用工作,您必须传递函数而不是字符串。但是通过将jQuery表达式包装在函数内部,它将在调用函数时运行。可以使用.call()方法调用函数。