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