在变量内发送jquery回调函数

在变量内发送jquery回调函数,jquery,Jquery,我有这个jquery函数 function example(file, targetwidget, callback){ $(targetwidget).load(file, {limit: 25}, function(){ $("#widget_accordion").accordion({fillSpace: true}); }); } 工作正常 当我这样做时: example('http://example.com/', "#divid", c

我有这个jquery函数

    function example(file, targetwidget, callback){

    $(targetwidget).load(file, {limit: 25}, function(){
        $("#widget_accordion").accordion({fillSpace: true});
    });
}
工作正常 当我这样做时:

 example('http://example.com/', "#divid", callback);
但是我想在(callback)变量中发送回调函数 i、 e:而不是对接$(“#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}, function(){
    callback();
});
这应该起作用:

$(targetwidget).load(file, {limit: 25}, 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(){
    if(typeof(callback)==='function'){
     callback.call(this, 'other parameters');
    }
});

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

由于传递的是文本字符串,因此需要对其求值:

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

要传递回调,变量的类型必须是function。其中任何一项都应该有效:

$(targetwidget).load(file, {limit: 25}, 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);

你试过callback()?我试过了,但问题是回调是:$(“#widget_accordion”).accordion({fillSpace:true});但是callback=$(“#widget_accordion”).accordion({fillSpace:true});我将尝试一下,您仍然需要通过()调用函数来调用该函数,假设回调确实是一个有效的函数!3分钟前回复谷歌666●我们都知道eval是邪恶的!是的,看看我的评论。只需使用call()而不是eval(),它不起作用,因为回调中的值是文本形式的jquery视图点,然后。。。似乎回调实际上不是一个函数:)要添加到这个伟大的答案上,您可能还需要添加验证,我建议使用jquery的$.isFunction()()