0

我有一个几乎可以工作的脚本。当 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并没有真正起作用。我究竟做错了什么?

4

2 回答 2

0

尝试类似的东西

$(window).scroll(function () {
    if ($("#myDiv").scrollTop() < height ) {
        myFunction();
    }
});
于 2013-09-15T22:47:53.730 回答
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()。

于 2013-09-15T23:31:01.180 回答