我正在搜索用户(水平)滚动时显示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);
});
});
});//]]>
答案 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