我正在尝试将页面转换添加到我的网站。但是由于某些原因,当我单击链接时,它会重定向到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;
}
});
我无法正常工作。任何帮助,将不胜感激。
最佳答案
这是因为newLocation
不在范围内(仅在click
函数的范围内可用)。 (请参阅更新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
函数的返回值(为null)传递给.fadeIn
函数。此模式适用于其他jQuery函数,例如
.slideUp
。这是.slideUp
的实现示例:$('.preloader').slideUp({
duration: 1000,
easing: "easeInOutQuint"
}, function() {
newpage(this.href)
});
更新1:
如注释中的Barmar所述,由于在代码段中未使用
newLocation
声明var
,因此它应自动为全局变量。这样,它实际上应该在newpage
函数的作用域内,并且原始代码段应该实际起作用。关于javascript - Javascript页面过渡未定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35879512/