虽然我可以找到有关如何重定向网页的帮助,但我找不到符合我情况的网页。
我想在重定向到表单的'action'链接之前淡出弹出窗口 - 里面有一个表单。
我在单独的函数中有fadeout,因为该函数更复杂并且被调用次数。
我的jquery代码:
$('form').submit(function(e){
function(e){
hidePopup()
,function(e){
window.location.href = $('form').attr('action');
};};
});
//hiding popup
function hidePopup(){
$(".popup").fadeOut("slow");
};
答案 0 :(得分:5)
fadeOut
接受回调函数作为第二个参数。完全被淘汰后,该回调即被完成。所以只需使用:
$(".popup").fadeOut("slow", function(){//Executes after faded out//});
在您的代码中,我建议您重写hidePopup
函数
function hidePopup(callback){
$(".popup").fadeOut("slow",callback);
};
执行它
hidePopup(function(){
window.location.href = $('form').attr('action');
});
更新您可以使用以下代码检查是否已通过有效回调:
function hidePopup(callback){
if (typeof(callback) =='function')
$(".popup").fadeOut("slow",callback);
else
$(".popup").fadeOut("slow");
};
这是一个强大的检查,可以保证你已经传递了一个有效的回调(好吧,因为JS不是严格类型的语言,你不能确定这个函数有正确的签名,但是那不在那个问题上。)
如果您完全确定自己总是会通过callback
或undefined
并且您懒得输入少于20个字符,则可以将if (typeof(callback) =='function')
简化为if (callback)
。它将检查您是否已通过某事。但这不是一个好习惯(但很受欢迎)。 :)
更新2:函数的 length
属性返回其参数的数量。见MDN