2015-11-02 4 views
0
 scrollTo: function (target, callback) { 
      var offset = $(target).offset().top - this.config.navHeight; 
      $('html, body').animate({ 
       scrollTop: offset 
      }, this.config.scrollSpeed, this.config.easing, callback); 
     }, 

     unbindInterval: function() { 
      clearInterval(this.t); 
      this.$win.unbind('scroll.onePageNav'); 
     } 
    }; 

    OnePageNav.defaults = OnePageNav.prototype.defaults; 

    $.fn.onePageNav = function (options) { 
     return this.each(function() { 
      new OnePageNav(this, options).init(); 
     }); 
    }; 
})(jQuery, window, document); 

Я получаю эту ошибку, когда прокручиваю каждый раз, когда запускается консоль разработчика. (В моих website все JS являются уменьшенная и объединены в один файл.)Uncaught TypeError: Невозможно прочитать свойство 'top' of undefined (jquery)

+0

как 'scrollTo' называется? –

+1

'offset()' будет возвращать 'undefined', если объект jQuery не содержит элементов (т. Е.' Target' не может быть найден) – Phil

+0

также есть ошибка 'Uncaught SyntaxError: Неожиданный токен:' на вашей странице –

ответ

2

Проблема заключается в Classes и Shows элементы не имеют href цель, его значение просто #, поэтому JQuery не удалось найти какой-либо результат для $('#'), поэтому t(i).offset() возвращается не определен.

Решение может быть, чтобы проверить, существует ли целевой элемент в scrollTo способом, как

scrollTo: function (target, callback) { 
    var $target = $(target); 
    if (!$target.length) { 
     return; 
    } 
    var offset = $target.offset().top - this.config.navHeight; 
    $('html, body').animate({ 
     scrollTop: offset 
    }, this.config.scrollSpeed, this.config.easing, callback); 
} 
+0

Спасибо, что он отлично работает! – Jim

Смежные вопросы