Это потому, что newLocation
не входит в сферу действия (доступно только в области функций click
). (см Update 1.)
Вместо этого, передать его в функцию newPage
следующим образом:
jQuery(document).ready(function($) {
$('.menu-item').click(function(event) {
event.preventDefault();
$('.preloader').fadeIn(1000, function() {
// Pass this.href into the newPage function
newPage(this.href);
});
});
function newPage(newLocation) {
window.location = newLocation;
}
});
Примечания:
- Обратите внимание, что я передаю в функцию второй аргумент функции
.fadeIn
. (См API Docs.) Вы не может просто передать newPage(this.href)
во второй аргумент, потому что будет передавать значение возврата функции newPage
(которая равна нулю) в функцию .fadeIn
.
Этот шаблон применяется к другим функциям jQuery, таким как .slideUp
. Вот пример реализации .slideUp
:
$('.preloader').slideUp({
duration: 1000,
easing: "easeInOutQuint"
}, function() {
newpage(this.href)
});
Update 1:
Как отметил Barmar в комментариях, так как newLocation
не объявлена с var
в вашем фрагменте кода , он должен автоматически быть глобальной переменной. Таким образом, он действительно должен быть в области в функции newpage
, и исходный фрагмент должен работать.
Вы не передадите новое место вашей функции –