无法读取未定义的jQuery错误

时间:2017-07-20 09:18:14

标签: javascript jquery undefined

我有以下代码:

$('body').scrollspy({ 
  target: '.sidebar > .nav > .active', 
  offset: 120 
});

/* animate scrolling to the sidebar sublink targets to ensure proper offsets */
$('.sidebar > .nav > .active > .nav > li > a').on('click', function () {
  var target = $($(this).attr('href'));
  $('html, body').animate({
    scrollTop: target.offset().top
  }, 200);
});

我收到以下错误

  

未捕获的TypeError:无法读取未定义的属性“top”
  在HTMLAnchorElement。 (?site.js V = 6-PQc6gnbrcv8oGPmVGKbiMSOAf5yrI5zG6Eeo7i360:81)
  在HTMLAnchorElement.dispatch(jquery-2.2.0.min.js:3)
  在HTMLAnchorElement.r.handle(jquery-2.2.0.min.js:3)

1 个答案:

答案 0 :(得分:0)

我的猜测是你没有选择你想要的东西。也许a不是目标。也许你没有选择等于href的部分。也许href不是你的想法。也许偏移是未定义的,因为jQuery无法计算它。

$('body').scrollspy({ 
  target: '.sidebar > .nav > .active', 
  offset: 120 
);

 $('.sidebar > .nav > .active > .nav > li > a').on('click', function () {
     var href = $(this).attr('href') || $('a', this).attr('href'),
         target = $(href);

     console.log('Href:', href);
     console.log('Target:', target);
     console.log('Offset:', target.offset());

     target.length && target.offset() && $('html, body').animate({
        scrollTop: target.offset().top
    }, 200);
 });

因为他们说:

  

注意:jQuery不支持获取隐藏元素的偏移坐标>或计算文件元素上设定的边距。

     

虽然可以获得具有可见性的元素的坐标:隐藏> set,display:none从渲染树中排除,因此具有位置> >这是未定义的。