Javascript页面转换undefined
我正在尝试向我的网站添加页面转换。但由于某些原因,当我点击它重定向一个链接mywebsite.com/undefinedJavascript页面转换undefined
这是我使用
jQuery(document).ready(function($) {
$('.menu-item').click(function(event) {
event.preventDefault();
newLocation = this.href;
$('.preloader').fadeIn(1000, newpage);
});
function newpage() {
window.location = newLocation;
}
});
的代码我无法得到它的工作。任何帮助,将不胜感激。
这是因为(见更新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)
进入第二个参数,因为这将通过newPage
功能的返回值(这是无效)到.fadeIn
功能。 -
此模式适用于其他jQuery功能,如
.slideUp
。下面是.slideUp
实现的一个例子:$('.preloader').slideUp({ duration: 1000, easing: "easeInOutQuint" }, function() { newpage(this.href) });
更新1:
正如在评论Barmar指出,由于newLocation
没有在您的代码段与var
声明它应该自动成为一个全局变量。因此,它实际上应该在newpage
函数的范围内,并且原始代码段实际上应该可以工作。
虽然为了节省污染,但实际上可以更好地将newLocation函数传递给函数 –
@DarrenSweeney,已修复。感谢您的支持。 –
好东西,现在都很好 –
你没有将新位置传递给你的函数 –