我搜索了网站并发现了类似的问题,但没有解决方案解决了我的问题。当我滚动到它时,我正试图将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并且无法解决这个问题。
答案 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));
});