【问题标题】:jQuery infinite scroll causes links to temporarily not work?jQuery无限滚动导致链接暂时不起作用?
【发布时间】:2012-01-06 18:41:22
【问题描述】:
几周前,我用 jquery 实现了一个无限滚动页面。滚动本身效果很好,但我得到了一个非常奇怪的副作用。
当我滚动并加载新内容时,前几秒内没有任何链接可用。事实上,页面上的任何链接都不会在几秒钟内起作用。如果我滚动得非常远,例如快速连续加载 5 个页面,情况似乎会变得更糟 - 然后我必须等待 20 秒,然后页面上的任何链接都可以点击。
我在使用 Firefox 或 IE8 时也有同样的体验,所以我猜不是浏览器的问题。
任何想法是什么原因或解决方法是什么?
【问题讨论】:
标签:
jquery
hyperlink
infinite-scroll
【解决方案1】:
还有这个问题吗?
问题:
- 页面加载 20 秒后,链接是否可点击?浏览器是“冻结”了 20 秒还是只是无法点击的链接?
- 要加载更多内容,是显示“显示更多”的链接,还是在用户点击页面底部时自动加载内容?
- 您是否使用 jQuery 的 .scroll() 来更新内容?
初步想法:
- 您是否对不可点击的链接使用 .click() 或 .bind('click', function)?试试 .live('click', function) 。
-
尝试使用 setTimeout。对于某些浏览器,jQuery 的 .scroll 会在滚动条更改的每个像素中调用处理函数……一旦完成所有滚动,这可能会导致函数调用过载。尝试这样的事情,它不会在您滚动时执行 1000 次函数调用(这只是一个简单的示例......代码可能会更好):
<script type="text/javascript">
var scrolling = false;
$(document).scroll('setScroll');
function setScroll() {
scrolling = setTimeout(doScrollUpdate, 300);
}
function doScrollUpdate() {
clearTimeout(scrolling);
// Do your ajax stuff here
}
</script>