当滚动按钮到达时,我正在使用window.scroll事件加载div上的内容。
$(window).scroll(function() {
if($(window).scrollTop() + $(window).height() > $(document).height() - 100) {
$(window).unbind('scroll');
loadMoreCommentsOnArticle();
}
});
function loadMoreCommentsOnArticle(){
$(window).bind('scroll');
var dynamicData = fetchData();
$('#parentElement').append(dynamicData);
}scroll在最初绑定一次后不再绑定。可能是$(Window)滚动(‘.unbind’)。但是我正在尝试使用$(Window).bind(‘scroll’)再次绑定滚动;但它不起作用。
不使用$(Window)滚动(‘.unbind’)。Scroll事件在任何时间内都会触发大量的次数。
根据罗里的说法,我正在使用这种方式
var $window = $(window);
function windowScroll() {
if ($window.scrollTop() + $window.height() > $(document).height() - 100) {
window.off('scroll');
loadMoreCommentsOnArticle();
}
}
$window.scroll(windowScroll);发布于 2017-08-31 18:35:20
问题在于,当您在loadMoreCommentsOnArticle()中重新绑定scroll事件时,您并没有提供要运行的函数。您可以通过将滚动逻辑提取到它自己的函数中来解决这个问题,以使绑定/重新绑定变得更容易。
另请注意,bind()和unbind()已弃用。您应该改用on()和off()。
var $window = $(window);
function windowScroll() {
if ($window.scrollTop() + $window.height() > $(document).height() - 100) {
$window.off('scroll');
loadMoreCommentsOnArticle();
}
}
$window.scroll(windowScroll);
function loadMoreCommentsOnArticle() {
$window.on('scroll', windowScroll);
$('#parentElement').append(fetchData());
}
function fetchData() {
console.log('loading data...')
return '<div>More data...</div>';
}#parentElement div {
height: 3000px;
}<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="parentElement">
<div>Some data...</div>
</div>
https://stackoverflow.com/questions/45979215
复制相似问题