创建自定义jquery不定式婴儿车,发送请求后如何打开和关闭滚动?
Posted
技术标签:
【中文标题】创建自定义jquery不定式婴儿车,发送请求后如何打开和关闭滚动?【英文标题】:Creating custom jquery infinitive stroller, how to turn scroll on and off after sending request? 【发布时间】:2019-11-02 08:07:00 【问题描述】:当我使用$(document).off('scroll');
关闭它时,我希望能够打开$(document).on('scroll', function() ...);
到目前为止,我的代码尝试使用 debounce 功能,但我得到了
非法调用
function scroller(lang, type, genre, sort, page)
console.log($(this).scrollTop() * 2, $('#pages').position().top);
if ($(this).scrollTop() * 2 >= $('#pages').position().top)
$.post('<?= (new UrlLibry)->SetUrl('bookshop', 'jajax', 'page'); ?>', lang: lang, type: type, genre: genre, sort: sort, pages: page, function(data)
$('#loadmore').append(data);
page++;
$('#pageNumber').data('page', page);
);
var debouncedMouseMove = debounce(scroller, 50);
$(document).on('scroll', debouncedMouseMove);
【问题讨论】:
【参考方案1】:您可以将处理函数与.on() 调用分离。
此外,如果您用去抖动函数替换所有内容,则需要继续考虑该函数必须只有一个参数:事件。
我使用了下划线js库中包含的debounce函数。
function scroller(event)
console.log('called...');
return;
var lang, type, genre, sort, page; // cannot pass as argument
console.log($(this).scrollTop() * 2, $('#pages').position().top);
if ($(this).scrollTop() * 2 >= $('#pages').position().top)
$.post("<?= (new UrlLibry)->SetUrl('bookshop', 'jajax', 'page'); ?>",
lang: lang, type: type, genre: genre, sort: sort, pages: page, function(data)
$('#loadmore').append(data);
page++;
$('#pageNumber').data('page', page);
);
var debouncedMouseMove = _.debounce(scroller, 50);
$(document).on('scroll', debouncedMouseMove);
body
height: 400vh;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>
【讨论】:
我认为它正在使用 debounce 功能,但现在我收到Illegal invocation
非常感谢,我设法在没有下划线库的情况下做到了,我需要吗?我的意思是,如果可以的话,我宁愿不使用外部库,因为我倾向于希望我的网站加载时间的性能少于 2 秒。以上是关于创建自定义jquery不定式婴儿车,发送请求后如何打开和关闭滚动?的主要内容,如果未能解决你的问题,请参考以下文章
Get 自定义 Jquery 数据表 GET 将发送到服务器的请求参数
在自定义适配器类中发送服务器请求后,如何更改 Listview 按钮名称?