如何检测用户何时使用jQuery滚动到页面上的某个区域?

Mik*_*ike 33 javascript jquery

可能重复:
如何检测页面滚动到jQuery中的某个点?
滚动后检查元素是否可见

如何检测用户何时到达此div:

<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />

<div id="theTarget">I have been reached</div>
Run Code Online (Sandbox Code Playgroud)

编辑

得到了这个问题的答案:

滚动后检查元素是否可见

所以我这样做了:

function isScrolledIntoView(elem)
{
    var docViewTop = $(window).scrollTop();
    var docViewBottom = docViewTop + $(window).height();
    var elemTop = $(elem).offset().top;
    var elemBottom = elemTop + $(elem).height();
    return ((elemBottom >= docViewTop) && (elemTop <= docViewBottom) && (elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}

$(window).scroll(function() {    
    if(isScrolledIntoView($('#theTarget')))
    {
        alert('visible');
    }    
});
Run Code Online (Sandbox Code Playgroud)

Sim*_*old 50

$(document).on('scroll', function() {
    if($(this).scrollTop()>=$('#theTarget').position().top){
        yourActionHere();
    }
})
Run Code Online (Sandbox Code Playgroud)

比较滚动和元素位置.比打电话给你的功能.不需要插件.

  • @DrunkenMaster你是对的.去抖将极大地有助于表现. (2认同)

Max*_*axx 5

我认为你可以通过比较div位置的值来实现你的目标

var divPosition = $("#theTarget").offset().top;
Run Code Online (Sandbox Code Playgroud)

和窗口滚动位置

var scrollPosition = window.scrollY;
Run Code Online (Sandbox Code Playgroud)