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

时间:2011-08-24 21:12:38

标签: javascript jquery

  

可能重复:
  How to detect page scroll to a certain point in jQuery?   
Check if element is visible after scrolling

如何检测用户何时到达此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>

修改

从这个问题得到答案:

Check if element is visible after scrolling

所以我就这样做了:

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');
    }    
});

3 个答案:

答案 0 :(得分:47)

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

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

答案 1 :(得分:5)

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

var divPosition = $("#theTarget").offset().top;

和窗口滚动位置

var scrollPosition = window.scrollY;

答案 2 :(得分:4)

有一个jquery出现的插件,我相信它正是你所要求的。

http://plugins.jquery.com/project/appear

$('#theTarget').appear(function() {
  $(this).text('Hello world');
});

它还与调整大小,初始窗口大小等等等相关联。