Javascript页面转换未定义

时间:2016-03-08 22:43:27

标签: javascript jquery

我正在尝试向我的网站添加页面转换。但出于某种原因,当我点击链接时,它会重定向到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;
  }
});

我无法让它发挥作用。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

因为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)传递给第二个参数,因为它会传递{{1}的返回值函数(为空)进入newPage函数。
  • 此模式适用于其他jQuery函数,例如.fadeIn。以下是.slideUp

    的实施示例
    .slideUp

更新1:

正如评论中Barmar所述,由于$('.preloader').slideUp({ duration: 1000, easing: "easeInOutQuint" }, function() { newpage(this.href) }); 未在您的代码段中使用newLocation声明,因此它应自动为全局变量。因此,它实际上应该在var函数的范围内,并且原始代码段实际上应该有效。