我正在尝试将页面转换添加到我的网站。但是由于某些原因,当我单击链接时,它会重定向到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/

10-12 07:11