如何在回调函数中回溯参数“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;
})
})
答案 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,然后将其作为参数传递