在变量中发送jquery回调函数

我有这个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; }); 

但那不起作用

在此先感谢您的帮助

要传递回调,变量必须是函数类型。 任何这些应该工作:

 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); 

你需要在回调中调用函数

 function example(file, targetwidget, callback){ $(targetwidget).load(file, {limit: 25}, function(){ callback(); }); 

这应该工作:

 $(targetwidget).load(file, {limit: 25}, callback); 

嗯..你这样做:

 function example(file, targetwidget, callback){ $(targetwidget).load(file, {limit: 25}, function(){ if(typeof(callback)==='function'){ callback.call(this, 'other parameters'); } }); 

回调参数将帮助您将数据发送回回调函数。 注意,不要忘记this关键字!

由于您要传递文本字符串,因此需要对其进行评估:

 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()方法调用函数。