我知道jquery不支持委托滚动事件。 所以我想知道正确的做法吗?
jQuery(document).scroll(function ()
{
var st = jQuery(this).scrollTop();
if (st < lastScrollTop)//if scroll up
{
if(jQuery('h1').isOnScreen())
{
console.log('I found my element');
}
}
//scroll down
else
{
//make an ajax call based on few conditions append elements to dom
}
lastScrollTop = st;
});
因此,当我向下滚动ajax时,调用并将新元素添加到DOM中。但是当我向上滚动时,在当前视口中找不到新元素,但只发现了存在的初始元素? 那么如何在当前视口中发现新添加的元素?
编辑1:
所以我已经找到了使用两个堆栈的问题的解决方案
if (scrollUp)
{
if(currentScrollTop < S1.peek())
{
if(S1.size() > 0)
{
S2.push(S1.pop())
console.log("I am back");
//change history
}
}
else
{
//onAjaxSuccess
while(!S2.isEmpty())
S1.push(S2.pop())
S1.push(currentScrollTop);//push new
}