我正在尝试向我的网站添加页面转换。但出于某种原因,当我点击链接时,它会重定向到mywebsite.com/undefined
这是我使用
的代码jQuery(document).ready(function($) {
$('.menu-item').click(function(event) {
event.preventDefault();
newLocation = this.href;
$('.preloader').fadeIn(1000, newpage);
});
function newpage() {
window.location = newLocation;
}
});
我无法让它发挥作用。任何帮助将不胜感激。
答案 0 :(得分:2)
因为(请参阅更新1。 )newLocation
超出了范围(它仅在click
函数的范围内可用)。
相反,将其传递到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)
传递给第二个参数,因为它会传递{{1}的返回值函数(为空)进入newPage
函数。此模式适用于其他jQuery函数,例如.fadeIn
。以下是.slideUp
:
.slideUp
更新1:
正如评论中Barmar所述,由于$('.preloader').slideUp({
duration: 1000,
easing: "easeInOutQuint"
}, function() {
newpage(this.href)
});
未在您的代码段中使用newLocation
声明,因此它应自动为全局变量。因此,它实际上应该在var
函数的范围内,并且原始代码段实际上应该有效。