jQuery |用户滚动时显示div

时间:2012-09-16 14:52:19

标签: jquery scroll hide show

我正在搜索用户(水平)滚动时显示div的解决方案,并在用户停止滚动时隐藏div。我找到了一些显示div的代码但是在滚动后没有隐藏它。

    $(function(){
tiles = $("ul#tiles li").fadeTo(0, 0);

$(window).scroll(function(d,h) {
    tiles.each(function(i) {
        a = $(this).offset().top + $(this).height();
        b = $(window).scrollTop() + $(window).height();
        if (a < b) $(this).fadeTo(500,1);
    });
});

});//]]>  

2 个答案:

答案 0 :(得分:0)

我不是很确定,但这可能有用吗?

    $(function(){
tiles = $("ul#tiles li").fadeTo(0, 0);

$(window).scroll(function(d,h) {
    tiles.each(function(i) {
        a = $(this).offset().top + $(this).height();
        b = $(window).scrollTop() + $(window).height();
        if (a < b) 
           $(this).fadeTo(500,1);
        else
          $(this).fadeOut();
    });
});

});//]]>

答案 1 :(得分:0)

只有你的fadeTo(0,0)运行一次,滚动结束后再没有运行。

您可以为scroll事件添加事件处理程序并启动超时。类似的东西:

var timer = null;
$(window).addEventListener('scroll', function() {
    if(timer !== null) {
        clearTimeout(timer);        
    }
    timer = startTimeout(function() {
          // do something
    }, 150);
}, false);

这将开始超时并等待150ms。如果在此期间发生新的scroll事件,则中止计时器并创建新计时器。如果不是,则执行该功能。你可能需要调整时间。

另请注意,IE使用不同的方式来附加事件侦听器,这应该给出一个很好的介绍:quirksmode - Advanced event registration models