获取错误“无法读取未定义的属性'顶部'”

时间:2017-01-26 18:38:27

标签: jquery

我搜索了网站并发现了类似的问题,但没有解决方案解决了我的问题。当我滚动到它时,我正试图将div固定在屏幕顶部。但我一直收到错误:

“(索引):59未捕获的TypeError:无法读取未定义的属性”top“     在(指数):59“

    
    //store the element
    var cache = '.faixatrabalho';
           console.log( cache );
    
    //store the initial position of the element
    var vTop = $(cache).offset().top - parseFloat($cache.css('margin-top').replace(/auto/, 0));
      $(window).scroll(function (event) {
        // what the y position of the scroll is
        var y = $(this).scrollTop();
    
        // whether that's below the form
        if (y >= vTop) {
          // if so, ad the fixed class
          $(cache).addClass('stuck');
        } else {
          // otherwise remove it
          $cache.removeClass('stuck');
        }
      });
    
        </script>
    
    .faixatrabalho {
        padding-top: 20px;
    	width: 100vw;
        position: static;
        top: 0px;
      }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="faixatrabalho">
        
        <div id="trabalhoback" data-scroll-speed="3"></div>
        
    	<div class="titulo">Nosso Trabalho</div>
    	<div class="texto1">
    		<p > Exemple text</p>
    	</div>
    </div>

我还在学习jquery并且无法解决这个问题。

1 个答案:

答案 0 :(得分:1)

错误意味着$(cache).offset()正在返回undefined,这在jQuery术语中通常意味着$(cache)没有找到任何内容。

从脚本的布局来看,您似乎可能会立即执行此代码,并且您查找的元素可能尚不存在(因为文档仍在加载)。在文档完全加载后尝试执行它。在jQuery中,您可以通过将代码包装在jQuery函数本身来完成此操作,该函数默认将其设置为文档的ready事件的处理程序:

$(function () {
    var cache = '.faixatrabalho';
    console.log( cache );

    //store the initial position of the element
    var vTop = $(cache).offset().top - parseFloat($cache.css('margin-top').replace(/auto/, 0));
});