我有一个几乎可以运作的脚本。当div距离页面顶部一定距离时,我正在尝试执行javascript函数。当用户滚动页面时,div将改变位置,我想计算它与顶部的距离。这就是我所拥有的:
$(window).scroll(function () {
var myDiv = $("#myDiv").offset().top;
var height = $(window).height();
if(myDiv < height)
{
myScript();
}
});
问题是这个脚本只在我在页面上一直向下滚动后运行。即使我写道:
也会发生这种情况var myDiv = parseInt($("#myDiv").offset().top) - 300;
似乎myDiv < height
并没有真正起作用。我做错了什么?
答案 0 :(得分:0)
尝试类似
的内容$(window).scroll(function () {
if ($("#myDiv").scrollTop() < height ) {
myFunction();
}
});
答案 1 :(得分:0)
$(window).scroll(function () {
var scrollTop = document.body.scrollTop;
var offsetTop = $("#myDiv").offset().top;
var offsetHeight = $("#myDiv").height();
if(scrollTop + $(window).height() >= offsetTop && scrollTop < offsetTop + offsetHeight) {
myScript();
}
});
基本上...
如果滚动位置+窗口的高度大于或等于div的顶部,并且文档的滚动位置大于div的底部,则触发myScript。
如果div可见,则应该触发myScript。
我使用了document.body.scrollTop,因为如果我使用$(“body”)。scrollTop(),Firefox总会返回0.如果你愿意,你可以使用$(“body”)。scrollTop()|| $( “HTML”)。scrollTop的()。