获取回调javascript函数中定义的参数值

时间:2011-11-01 05:19:44

标签: javascript

如何在回调函数中回溯参数“url”?

在全局范围内声明的函数:

var showPrompt = function(text, callBackFunc){
    $('#msg').html(text);
    $('#msgbtn').click( function(){callBackFunc();})
};

//调用函数

$('li').click(function(){  // about 100 li el.
    var url = '/prod/' + $(this).data('id');
    showPrompt('Page will be redirected', function(url){
        window.location = url;
    })
})

3 个答案:

答案 0 :(得分:1)

不要将url声明为您的函数的参数,并且您将获得所需的外部url

var url = ('error.html');
showPrompt('Page will be redirected', function() {
    window.location = url;
});

你不需要showPrompt内的额外匿名功能,这是可以的:

showPrompt = function(text, callBackFunc) {
    $('#msg').html(text);
    $('#msgbtn').click(callBackFunc);
};

除非您想要在没有任何参数的情况下始终致电callBackFunc。将其作为

附加
.click(callBackFunc)

表示将以事件作为参数调用它。

答案 1 :(得分:1)

showPrompt = function(text, callBackFunc, args){
    $('#msg').html(text);
    $('#msgbtn').click( function(){callBackFunc(args);})
};
//calling function

$('li').click(function(){  // about 100 li el.
    var url = '/prod/' + $(this).attr('id');
    showPrompt('Page will be redirected', function(args){
       alert(args.url);
    }, {'url':url})
})

使用这种方式(更清洁的方法)

' - 或 -

showPrompt = function(text, callBackFunc){
    $('#msg').html(text);
    $('#msgbtn').click( callBackFunc);
};
//calling function

$('li').click(function(){  // about 100 li el.
    var url = '/prod/' + $(this).attr('id');
    showPrompt('Page will be redirected', function(){
       alert(url);
    })
})

答案 2 :(得分:0)

showPrompt = function(text, callBackFunc) {
    var url = ('error.html');
    $('#msg').html(text);
    $('#msgbtn').click( function(){callBackFunc(url);})
};

//calling function
showPrompt('Page will be redirected', function(url){
    window.location = url;
})
你可以这样做。只需在函数调用callBackFunc的闭包中声明url,然后将其作为参数传递